﻿Imports System.Linq
Imports System.Data
Imports Sybase.Data.AseClient
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Windows.Media
Imports System.ComponentModel
Imports System.Collections.ObjectModel
Imports Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Interop
Imports Microsoft.Win32.OpenFileDialog
Imports System.Threading
Imports System.Globalization
Imports System.Windows.Controls.Primitives

Class CMCOVAFTLPorvenir
    Dim intErrores As Integer
    Dim intFuncion As Integer
    Private servGrales As New CServiciosGenerales()
    Dim COVAFTLServicio As New CCOVAFTLServicio()
    Dim TipoAux As New CTipo(0, "----------")
    Dim dtDatos As New System.Data.DataTable()
    Dim dtDatosCalculados As New System.Data.DataTable()
    Dim dtDatosUDI As New System.Data.DataTable()
    Dim Aplicacion As _Application
    Private dtValmer As New System.Data.DataTable()
    Private dtClavesOp As New System.Data.DataTable()
    Private dtInstrumentos As New System.Data.DataTable()
    Private dtPortfolios As New System.Data.DataTable()
    Private dtBrokers As New System.Data.DataTable()
    Private lstUltimosInstrumentos As New List(Of CInstrumento)
    Private dtTransaccionesABorrar As New System.Data.DataTable()
    Private dtChequerasABorrar As New System.Data.DataTable()
    Dim InicioRenglon As Integer
    Private fechasInhabiles As List(Of CFechaNoLab)

#Region "Carga ventana"
    Private Sub CMCOVAFTLPorvenir_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        Try
            intFuncion = Convert.ToInt64(Application.Current.Properties("Funcion"))
            'xxx ID_FUNCION = 1 Pendiente
            fechasInhabiles = servGrales.ObtenerFechasNoLab(1)
            CargaTipos(intFuncion)
            CargaFechasBorrado()
            InicioRenglon = COVAFTLServicio.ObtieneInicioRengCOFAVTLPorvenir()
            dtDatos.Columns.Add("Fondo")
            dtDatos.Columns.Add("Transaccion")
            dtDatos.Columns.Add("Inversion")
            dtDatos.Columns.Add("Emisora")
            dtDatos.Columns.Add("Serie")
            dtDatos.Columns.Add("TV")
            dtDatos.Columns.Add("Titulos")
            dtDatos.Columns.Add("Importe", System.Type.GetType("System.Double"))
            dtDatos.Columns.Add("Tasa", System.Type.GetType("System.Double"))
            dtDatos.Columns.Add("Intermed")
            dtDatos.Columns.Add("CtaIndevalInt")
            dtDatos.Columns.Add("CPN")
            dtDatos.Columns.Add("CtaIndeval")
            dtDatos.Columns.Add("CtoOper")
            dtDatos.Columns.Add("PSucio")
            dtDatos.Columns.Add("TRend")
            dtDatos.Columns.Add("Pzo")
            dtDatos.Columns.Add("FReg")
            dtDatos.Columns.Add("FLiquid")
            dtDatos.Columns.Add("FVenc")
            dtDatos.Columns.Add("Liquid")
            dtDatos.Columns.Add("Hora")
            dtDatos.Columns.Add("NOrden")
            dtDatos.Columns.Add("CveOper")
            dtDatos.Columns.Add("Aux1", System.Type.GetType("System.Double"))
            dtDatos.Columns.Add("Aux2", System.Type.GetType("System.Double"))
            dtDatos.Columns.Add("Aux3", System.Type.GetType("System.Double"))
            dtDatos.Columns.Add("Aux4", System.Type.GetType("System.Double"))

            dtDatosCalculados.Columns.Add("TipoValorParse")
            dtDatosCalculados.Columns.Add("Acronimo")
            dtDatosCalculados.Columns.Add("LongName")
            dtDatosCalculados.Columns.Add("PF_COD")
            dtDatosCalculados.Columns.Add("IsVencido")
            dtDatosCalculados.Columns.Add("IsNotPortfolioFound")
            dtDatosCalculados.Columns.Add("SETTLE_DAT")
            dtDatosCalculados.Columns.Add("XACT_DAT")
            dtDatosCalculados.Columns.Add("INST_ACR")
            dtDatosCalculados.Columns.Add("XACT_TYP")
            dtDatosCalculados.Columns.Add("NEGO_PRICE", System.Type.GetType("System.Double"))
            dtDatosCalculados.Columns.Add("UDI")
            dtDatosCalculados.Columns.Add("IsUDI")
            dtDatosCalculados.Columns.Add("INST_QTY")
            dtDatosCalculados.Columns.Add("INST_PRICE")
            dtDatosCalculados.Columns.Add("BROKER_COD")
            dtDatosCalculados.Columns.Add("ENTITE")
            dtDatosCalculados.Columns.Add("NEGO_QUOTE_MOD")
            dtDatosCalculados.Columns.Add("RATE_TYP")
            dtDatosCalculados.Columns.Add("RATE_EXPR")
            dtDatosCalculados.Columns.Add("CONT_START_DAT")
            dtDatosCalculados.Columns.Add("CONT_END_DAT")
            dtDatosCalculados.Columns.Add("INT_CALC_MOD")
            dtDatosCalculados.Columns.Add("QUOTE_MOD")
            dtDatosCalculados.Columns.Add("QTY_EXPR")
            dtDatosCalculados.Columns.Add("FREQ")
            dtDatosCalculados.Columns.Add("CUR_COD_1")
            dtDatosCalculados.Columns.Add("CUR_COD_2")
            dtDatosCalculados.Columns.Add("AMT_CUR_1")
            dtDatosCalculados.Columns.Add("CONT_TYP")
            dtDatosCalculados.Columns.Add("CUR_LOTSIZE_1")
            dtDatosCalculados.Columns.Add("CUR_LOTSIZE_2")
            dtDatosCalculados.Columns.Add("EXT_REF")
            dtDatosCalculados.Columns.Add("AMT_BROKER")
            dtDatosCalculados.Columns.Add("AMT_VAT")
            dtDatosCalculados.Columns.Add("BUY_OR_SELL")
            dtDatosCalculados.Columns.Add("PRICE_SPOT")
            dtDatosCalculados.Columns.Add("RATE", System.Type.GetType("System.Double"))
            dtDatosCalculados.Columns.Add("NumeroRegistro")
            dtDatosCalculados.Columns.Add("Error")

            dtDatosUDI.Columns.Add("Fecha")
            dtDatosUDI.Columns.Add("Valor")

            Mouse.OverrideCursor = Cursors.Arrow

        Catch ex As Exception
            Mouse.OverrideCursor = Cursors.Arrow

            MessageBox.Show("Error TI500. " & ex.Message, "Carga página COVAFTL Porvenir", MessageBoxButton.OK, MessageBoxImage.Error)
        End Try
    End Sub
#End Region

#Region "Cargas iniciales"
    Private Sub CargaTipos(ByVal intFuncion As Integer)
        Dim lstTipos As List(Of CTipo) = COVAFTLServicio.ObtenerTipos(intFuncion)
        lstTipos.Add(TipoAux)

        cmbTipo.ItemsSource = lstTipos
        cmbTipo.SelectedItem = TipoAux
    End Sub

    Private Sub CargarClavesOperacion()
        Dim intBitacoraDecalog As Integer

        intBitacoraDecalog = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Carga datos Clave Operacion", "Carga de claves de operacion")

        dtClavesOp.Clear()

        dtClavesOp = COVAFTLServicio.ObtieneClavesOp()

        CUtileria.CompletarRegBitacora(intBitacoraDecalog)
    End Sub

    Private Sub CargaDatosDECALOG()
        Dim intBitacoraDecalog As Integer

        intBitacoraDecalog = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Carga datos DECALOG", "Carga de instrumentos, portfolios y brokers desde DECALOG")

        dtInstrumentos.Clear()
        dtPortfolios.Clear()
        dtBrokers.Clear()

        dtInstrumentos = COVAFTLServicio.ObtieneInstrumentos()
        dtPortfolios = COVAFTLServicio.ObtienePortfolios()
        dtBrokers = COVAFTLServicio.ObtieneBrokersPorvenir()

        CUtileria.CompletarRegBitacora(intBitacoraDecalog)
    End Sub

    Private Sub CargaBanxico()
        Dim wbkBanxico As Workbook
        Dim hojaBanxico As Worksheet
        Dim TotalRenglonesBanxico As Integer
        Dim rangoBanxico As Range
        Dim strRuta As String
        Dim intBitacoraBanxico As Integer

        Try
            Aplicacion = GetObject(, "Excel.Application")
        Catch ex As Exception
            Aplicacion = CreateObject("Excel.Application")
        End Try

        Try
            strRuta = COVAFTLServicio.ObtieneRutaUDI()

            intBitacoraBanxico = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Carga datos Banxico", "Carga datos desde " + strRuta + " para el calculo de información")

            wbkBanxico = Aplicacion.Workbooks.Open(strRuta, [ReadOnly]:=True)
        Catch ex As Exception
            Dim intErrorBanxico As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Carga datos Banxico", ex.Message)
            CUtileria.CompletarRegBitacora(intErrorBanxico)

            Mouse.OverrideCursor = Cursors.Arrow

            MessageBox.Show("Error TI500. " & ex.Message, "Carga datos UDI", MessageBoxButton.OK, MessageBoxImage.Error)

            Exit Sub
        End Try

        dtDatosUDI.Clear()

        hojaBanxico = wbkBanxico.Sheets(1)

        rangoBanxico = hojaBanxico.UsedRange

        TotalRenglonesBanxico = rangoBanxico.Rows.Count

        For RenglonInicial = 14 To TotalRenglonesBanxico Step 1
            Dim drValor As DataRow = dtDatosUDI.NewRow()

            'Fecha
            drValor(0) = Convert.ToDateTime(hojaBanxico.Cells(RenglonInicial, 1).Value).ToString("dd-MM-yyyy")
            'Valor
            drValor(1) = Convert.ToDouble(hojaBanxico.Cells(RenglonInicial, 2).Value2.ToString)

            dtDatosUDI.Rows.Add(drValor)
            dtDatosUDI.AcceptChanges()
        Next

        wbkBanxico.Close()

        CUtileria.CompletarRegBitacora(intBitacoraBanxico)

    End Sub

    Private Sub CargaValmer()
        Try
            Dim strRutaValmer As String
            Dim intBitacoraValmer As Integer

            strRutaValmer = COVAFTLServicio.ObtieneRutaValmer()

            intBitacoraValmer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Carga datos VALMER", "Carga datos desde " + strRutaValmer + " para el calculo de información")

            dtValmer = New System.Data.DataTable()

            dtValmer = COVAFTLServicio.ObtieneTablaValmer(strRutaValmer)

            If dtValmer Is Nothing Then
                dtValmer = New System.Data.DataTable()
                dtValmer.Columns.Add("Instrumento")
                dtValmer.Columns.Add("TV")
                dtValmer.Columns.Add("Emisora")
                dtValmer.Columns.Add("Serie")
                dtValmer.Columns.Add("Isin")
                MessageBox.Show("No se cargó correctamente la información de VALMER", "Carga VALMER", MessageBoxButton.OK, MessageBoxImage.Warning)
            End If

            CUtileria.CompletarRegBitacora(intBitacoraValmer)
        Catch ex As Exception
            Dim intErrorValmer As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Carga datos VALMER", ex.Message)
            CUtileria.CompletarRegBitacora(intErrorValmer)

            Mouse.OverrideCursor = Cursors.Arrow

            MessageBox.Show("Error TI500. " & ex.Message, "Carga datos VALMER", MessageBoxButton.OK, MessageBoxImage.Error)
        End Try
    End Sub

    Private Sub CargaFechasBorrado()
        Dim lstFechas As List(Of CFechaBorrado)

        lstFechas = COVAFTLServicio.ObtieneFechasBorrado()

        cmbFechaBorrado.ItemsSource = lstFechas
        cmbFechaBorrado.SelectedIndex = 0
    End Sub
#End Region

#Region "Carga archivo"
    Private Sub btnCargaOPDIA_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnCargaOPDIA.Click
        Dim dlg As New Microsoft.Win32.OpenFileDialog()
        Dim wbk As Workbook
        Dim hoja As Worksheet
        Dim blnArchivoElegido As Boolean
        Dim rango As Range
        Dim renglon As Integer, TotalRenglones As Integer
        Dim blnEstabaCerrada As Boolean = True
        Dim indice As Integer = 0, indiceAux As Integer = 2, intTotal As Integer = 0
        Dim strNombreAuxiliar As String
        Dim intBitacoraCarga As Integer

        Try
            dlg.FileName = ""
            dlg.DefaultExt = ".png"
            dlg.Filter = "Excel documents|*.xls;*.xlsx;*.xlsm"

            blnArchivoElegido = dlg.ShowDialog()

            If blnArchivoElegido Then
                intBitacoraCarga = CUtileria.GrabarBitacora("COVAFTLPorvenir", "CargarArchivo", "Carga de archivo Excel para macro COVAFTL Porvenir")

                Try
                    Aplicacion = GetObject(, "Excel.Application")
                    Aplicacion.DisplayAlerts = False
                    Aplicacion.Visible = False
                Catch ex As Exception
                    Aplicacion = CreateObject("Excel.Application")
                    Aplicacion.DisplayAlerts = False
                    Aplicacion.Visible = False
                    blnEstabaCerrada = True
                End Try

                While indice >= 0
                    indice = dlg.FileName.IndexOf("\", indiceAux)

                    If indice > 0 Then
                        indiceAux = indice + 1
                    End If
                End While

                strNombreAuxiliar = dlg.FileName.Substring(indiceAux, dlg.FileName.Length - indiceAux)

                For Each wbAux As Workbook In Aplicacion.Workbooks
                    If wbAux.Name = strNombreAuxiliar Then
                        wbAux.Close()
                    End If
                Next

                Mouse.OverrideCursor = Cursors.Wait

                grdCargaExcel.ItemsSource = Nothing
                grdCargaExcel.Items.Refresh()

                grdFicheroTL.ItemsSource = Nothing
                grdFicheroTL.Items.Refresh()

                Try
                    wbk = Aplicacion.Workbooks.Open(dlg.FileName)
                Catch ex As Exception
                    Dim intErrorAperturaArchivo As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "CargarArchivo", ex.Message)
                    CUtileria.CompletarRegBitacora(intErrorAperturaArchivo)

                    Mouse.OverrideCursor = Cursors.Arrow

                    MessageBox.Show("Error TI500. Si esta modificando otro libro favor de temrinar e intentar nuevamente. " & ex.Message, "Carga archivo", MessageBoxButton.OK, MessageBoxImage.Error)

                    Exit Sub
                End Try

                CargarClavesOperacion()
                CargaBanxico()
                CargaDatosDECALOG()
                CargaValmer()
                dtDatos.Clear()
                dtDatosCalculados.Clear()
                Dim mercado As String = ""
                Dim isin As String = ""
                Dim transaccion As String = ""
                Dim inversion As String = ""
                Dim emisora As String = ""
                Dim serie As String = ""
                Dim tv As String = ""
                Dim falta As DateTime
                Dim fopera As DateTime
                Dim fvenc As DateTime
                Dim fliq As DateTime
                Dim plazo As Long
                Dim tipoliq As String = ""
                Dim precio_calc As Double
                Dim importe_calc As Double
                Dim regData() As DataRow
                Dim dias As Long

                Dim mensajeDesc As String = ""
                For sheetnum = 1 To wbk.Sheets.Count Step 1
                    hoja = wbk.Sheets(sheetnum)

                    rango = hoja.UsedRange

                    TotalRenglones = rango.Rows.Count

                    For renglon = InicioRenglon To TotalRenglones Step 1
                        Dim NuevoRenglon As DataRow = dtDatos.NewRow()
                        Dim drCalculado As DataRow = dtDatosCalculados.NewRow()

                        'Campo Fondo
                        If Not hoja.Cells(renglon, 3).Value2 Is Nothing Then
                            NuevoRenglon(0) = hoja.Cells(renglon, 3).Value2.ToString.Trim.Substring(0, 7)
                        Else
                            mensajeDesc = mensajeDesc & hoja.Name & " - L:" & renglon & " No contiene valor CONTRATO CUSTODIA MUV" & vbNewLine
                            Continue For
                        End If

                        'Validando TV Emisora Serie
                        If Not hoja.Cells(renglon, 9).Value2 Is Nothing And _
                            Not hoja.Cells(renglon, 7).Value2 Is Nothing And _
                            Not hoja.Cells(renglon, 8).Value2 Is Nothing Then

                            regData = dtValmer.Select("TV = '" + hoja.Cells(renglon, 9).Value2.ToString.Trim + "' And Emisora = '" + hoja.Cells(renglon, 7).Value2.ToString.Trim + "' And Serie = '" + hoja.Cells(renglon, 8).Value2.ToString.Trim + "'")

                            If regData.Count > 0 Then
                                mercado = regData(0)("TipoMercado")
                                isin = regData(0)("Isin")
                                emisora = regData(0)("Emisora")
                                serie = regData(0)("Serie")
                                tv = regData(0)("TV")
                            Else
                                regData = dtValmer.Select("TV = '" + hoja.Cells(renglon, 9).Value2.ToString.Trim + "' And Emisora like '%" + hoja.Cells(renglon, 7).Value2.ToString.Trim + "%' And Serie = '" + hoja.Cells(renglon, 8).Value2.ToString.Trim + "'")
                                If regData.Count > 0 Then
                                    mercado = regData(0)("TipoMercado")
                                    isin = regData(0)("Isin")
                                    emisora = regData(0)("Emisora")
                                    serie = regData(0)("Serie")
                                    tv = regData(0)("TV")
                                Else
                                    mercado = "XXX"
                                    isin = "XXX"
                                    mensajeDesc = mensajeDesc & hoja.Name & " - L:" & renglon & " No existe instrumento en VECTOR PRECIOS" & vbNewLine
                                End If

                            End If

                            If mercado = "MD" Then
                                mercado = "DEUDA"
                            ElseIf mercado = "MC" Then
                                mercado = "RV"
                            Else
                                mercado = "XXX"
                            End If


                            If Not hoja.Cells(renglon, 6).Value2 Is Nothing Then
                                regData = dtClavesOp.Select("MERCADO = '" + mercado + "' And TIPO_OPERACION = '" + hoja.Cells(renglon, 6).Value2.ToString.Trim + "'")
                                If regData.Count > 0 Then
                                    transaccion = regData(0)("TRANSACCION_COVAFSYS")
                                    inversion = regData(0)("INVERSION_COVAFSYS")
                                Else
                                    If isin <> "XXX" Then
                                        mensajeDesc = mensajeDesc & hoja.Name & " - L:" & renglon & " No existe clave de operacion para MERCADO = " & mercado & " Y TIPO_OPERACION = " & hoja.Cells(renglon, 6).Value2.ToString.Trim & vbNewLine
                                    End If
                                    Continue For
                                End If
                            Else
                                mensajeDesc = mensajeDesc & hoja.Name & " - L:" & renglon & " No existe valor CLAVE OPERACIÓN CR/CD/VD" & vbNewLine
                                Continue For
                            End If


                            If Not hoja.Cells(renglon, 12).Value2 Is Nothing And Not hoja.Cells(renglon, 13).Value2 Is Nothing Then
                                Try
                                    falta = DateTime.ParseExact(hoja.Cells(renglon, 12).Value.ToString, "ddMMyy", CultureInfo.CurrentCulture)
                                    fopera = DateTime.ParseExact(hoja.Cells(renglon, 13).Value.ToString, "ddMMyy", CultureInfo.CurrentCulture)
                                Catch ex As Exception
                                    mensajeDesc = mensajeDesc & hoja.Name & " - L:" & renglon & " Formato incorrecto FECHA ADQUISICIÓN o FECHA LIQUIDACIÓN" & vbNewLine
                                    Continue For
                                End Try
                            Else
                                mensajeDesc = mensajeDesc & hoja.Name & " - L:" & renglon & " No existe valor FECHA ADQUISICIÓN o FECHA LIQUIDACIÓN" & vbNewLine
                                Continue For
                            End If

                            plazo = DateDiff(DateInterval.Day, falta, fopera)

                            fvenc = falta.AddDays(plazo)
                            dias = DiffDiasHabiles(falta, fvenc)
                            fvenc = SumaDiasHabiles(falta, dias)

                            Select Case transaccion
                                Case "C"
                                    If dias = 1 Then
                                        tipoliq = "MD"
                                        fliq = falta
                                    Else
                                        tipoliq = (plazo * 24).ToString
                                        fliq = fvenc
                                    End If
                                    'xxx
                                    'comision = 0
                                    'impuesto = 0
                                Case "V"
                                    If dias = 1 Then
                                        tipoliq = "MD"
                                        fliq = falta
                                        fvenc = falta
                                    Else
                                        tipoliq = (plazo * 24).ToString
                                        fliq = fvenc
                                    End If
                                    'xxx
                                    'comision = 0
                                    'impuesto = 0
                            End Select

                            If Not hoja.Cells(renglon, 11).Value2 Is Nothing Then
                                'Campo Titulos
                                Try
                                    NuevoRenglon(6) = Convert.ToDouble(hoja.Cells(renglon, 11).Value2.ToString)
                                Catch ex As Exception
                                    NuevoRenglon(6) = Convert.ToString(hoja.Cells(renglon, 11).Value2)
                                End Try
                            Else
                                mensajeDesc = mensajeDesc & hoja.Name & " - L:" & renglon & " No existe valor CANTIDAD DE TÍTULOS" & vbNewLine
                                Continue For
                            End If

                            If Not hoja.Cells(renglon, 22).Value2 Is Nothing Then
                                'Campo Importe
                                Try
                                    NuevoRenglon(7) = Math.Round(Convert.ToDouble(hoja.Cells(renglon, 22).Value2.ToString), 2)
                                Catch ex As Exception
                                    NuevoRenglon(7) = 0
                                End Try
                            Else
                                mensajeDesc = mensajeDesc & hoja.Name & " - L:" & renglon & " No existe valor IMPORTE" & vbNewLine
                                Continue For
                            End If

                            If Not hoja.Cells(renglon, 14).Value2 Is Nothing Then
                                'Campo P. Sucio.
                                Try
                                    NuevoRenglon(14) = Math.Round(Convert.ToDouble(hoja.Cells(renglon, 14).Value2.ToString), 6)
                                Catch ex As Exception
                                    NuevoRenglon(14) = Convert.ToString(hoja.Cells(renglon, 14).Value2)
                                End Try
                            Else
                                mensajeDesc = mensajeDesc & hoja.Name & " - L:" & renglon & " No existe valor PRECIO SUCIO" & vbNewLine
                                Continue For
                            End If


                            precio_calc = CalculaPrecio(regData(0), NuevoRenglon(14), tipoliq, NuevoRenglon(6), NuevoRenglon(7))
                            importe_calc = precio_calc * NuevoRenglon(6)

                            precio_calc = Math.Round(precio_calc, 6)
                            importe_calc = Math.Round(importe_calc, 2)

                            'Campo Transaccion
                            NuevoRenglon(1) = transaccion
                            'Campo Inversion
                            NuevoRenglon(2) = inversion
                            'Campo Emisora
                            NuevoRenglon(3) = emisora
                            'Campo Serie
                            NuevoRenglon(4) = serie
                            'Campo TV
                            NuevoRenglon(5) = tv



                            If Not hoja.Cells(renglon, 21).Value2 Is Nothing Then
                                'Campo Tasa Trend
                                Try
                                    NuevoRenglon(8) = Math.Round(Convert.ToDouble(hoja.Cells(renglon, 21).Value2.ToString), 6)
                                    NuevoRenglon(15) = Math.Round(Convert.ToDouble(hoja.Cells(renglon, 21).Value2.ToString), 6)
                                Catch ex As Exception
                                    NuevoRenglon(8) = 0
                                    NuevoRenglon(15) = 0
                                End Try
                            End If

                            If Not hoja.Cells(renglon, 18).Value2 Is Nothing Then
                                'Campo Intermed.
                                NuevoRenglon(9) = hoja.Cells(renglon, 18).Value2
                            Else
                                mensajeDesc = mensajeDesc & hoja.Name & " - L:" & renglon & " No existe valor CONTRAPARTE" & vbNewLine
                                Continue For
                            End If

                            'Campo Cta. Indeval. Int.
                            NuevoRenglon(10) = 0
                            'Campo CPN
                            NuevoRenglon(11) = 0
                            'Campo Cta. Indeval.
                            NuevoRenglon(12) = 0
                            'Campo Cto. Oper.
                            NuevoRenglon(13) = 0
                            'Campo Plazo.
                            NuevoRenglon(16) = plazo
                            'Campo F. Reg.
                            NuevoRenglon(17) = falta.ToString("dd/MM/yyyy")
                            'Campo F. Liq
                            NuevoRenglon(18) = fliq.ToString("dd/MM/yyyy")
                            'Campo F. Ven
                            NuevoRenglon(19) = fvenc.ToString("dd/MM/yyyy")
                            'Campo Liq
                            NuevoRenglon(20) = tipoliq
                            'Campo Hora
                            NuevoRenglon(21) = "00:00"
                            'Campo N. Orden
                            NuevoRenglon(22) = 0
                            'Campo Cve. Oper
                            NuevoRenglon(23) = regData(0)("DESCRIPCION_COVAFSYS")
                            'Campo Col Y
                            NuevoRenglon(24) = importe_calc * (Convert.ToDouble(regData(0)("COMISION")) / 100)
                            'Campo Col Z
                            NuevoRenglon(25) = importe_calc * (Convert.ToDouble(regData(0)("COMISION")) / 100) * (Convert.ToDouble(regData(0)("IMPUESTO")) / 100)
                            'Campo Col AA
                            NuevoRenglon(26) = importe_calc
                            'Campo Col AB
                            NuevoRenglon(27) = precio_calc

                            'xxx
                            'Calculo TipoValorParse
                            If NuevoRenglon("Fondo").ToString.Length = 0 Then
                                drCalculado("TipoValorParse") = ""
                            Else
                                If NuevoRenglon("Fondo").ToString.Length > 0 And NuevoRenglon("TV").ToString <> "1I" And NuevoRenglon("TV").ToString <> "1A" Then
                                    drCalculado("TipoValorParse") = NuevoRenglon("TV")
                                Else
                                    If NuevoRenglon("TV").ToString = "1I" Then
                                        drCalculado("TipoValorParse") = "1ISP"
                                    Else
                                        If NuevoRenglon("TV").ToString = "1A" Then
                                            drCalculado("TipoValorParse") = "1ASP"
                                        End If
                                    End If
                                End If
                            End If
                            'Calculo Acronimo
                            If NuevoRenglon("Fondo").ToString.Length > 0 Then
                                drCalculado("Acronimo") = drCalculado("TipoValorParse").ToString.Trim + NuevoRenglon("Emisora").ToString.Trim + NuevoRenglon("Serie").ToString.Trim
                            Else
                                drCalculado("Acronimo") = ""
                            End If

                            'Calculo LongName
                            If NuevoRenglon("Fondo").ToString.Length > 0 Then
                                drCalculado("LongName") = NuevoRenglon("TV").ToString.Trim + "_" + NuevoRenglon("Emisora").ToString.Trim + "_" + NuevoRenglon("Serie").ToString.Trim
                            Else
                                drCalculado("LongName") = ""
                            End If

                            'Calculo PF_COD = Fondo
                            drCalculado("PF_COD") = NuevoRenglon("Fondo").ToString.Trim

                            'Calculo IsVencido
                            If NuevoRenglon("Fondo").ToString.Length > 0 Then
                                If NuevoRenglon("CveOper").ToString = "VENCIMIENTO" Then
                                    drCalculado("IsVencido") = "VERDADERO"
                                Else
                                    drCalculado("IsVencido") = "FALSO"
                                End If
                            Else
                                drCalculado("IsVencido") = ""
                            End If

                            'Calculo(IsNotPortfolioFound)
                            If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsVencido") = "FALSO" Then
                                If dtPortfolios.Rows.Count > 0 Then
                                    Dim reg() As DataRow

                                    reg = dtPortfolios.Select("PF_COD = '" + NuevoRenglon("Fondo").ToString.Trim + "'")

                                    If reg.Count > 0 Then
                                        drCalculado("IsNotPortfolioFound") = "FALSO"
                                    Else
                                        drCalculado("IsNotPortfolioFound") = "VERDADERO"
                                    End If
                                Else
                                    drCalculado("IsNotPortfolioFound") = "VERDADERO"
                                End If
                            Else
                                drCalculado("IsNotPortfolioFound") = ""
                            End If


                            'Calculo SETTLE_DAT = Fecha Liquidacion
                            If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                                Try
                                    drCalculado("SETTLE_DAT") = fliq.ToString("dd-MM-yyyy")
                                Catch ex As Exception
                                    drCalculado("SETTLE_DAT") = Convert.ToString(fliq)
                                End Try
                            Else
                                drCalculado("SETTLE_DAT") = ""
                            End If

                            'Calculo XACT_DAT = Fecha Ejecucion
                            If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                                Try
                                    drCalculado("XACT_DAT") = falta.ToString("dd-MM-yyyy")
                                Catch ex As Exception
                                    drCalculado("XACT_DAT") = Convert.ToString(falta)
                                End Try
                            Else
                                drCalculado("XACT_DAT") = ""
                            End If

                            'Calculo INST_ACR = Instrumento Decalog
                            If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsVencido") = "FALSO" And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                                Dim regAux() As DataRow

                                regAux = dtInstrumentos.Select("INST_ACR = '" + drCalculado("Acronimo") + "'")

                                If regAux.Count > 0 Then
                                    drCalculado("INST_ACR") = regAux(0)("INST_ACR")
                                Else
                                    drCalculado("INST_ACR") = "#N/A"
                                End If
                            Else
                                drCalculado("INST_ACR") = ""
                            End If

                            'Calculo XACT_TYP = BUY_OR_SELL = Tipo Transaccion
                            If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                                drCalculado("XACT_TYP") = TipoTransaccion(NuevoRenglon("CveOper"), NuevoRenglon("Transaccion"), NuevoRenglon("Inversion"), NuevoRenglon("TV"))
                                drCalculado("BUY_OR_SELL") = TipoTransaccion(NuevoRenglon("CveOper"), NuevoRenglon("Transaccion"), NuevoRenglon("Inversion"), NuevoRenglon("TV"))
                            Else
                                drCalculado("XACT_TYP") = ""
                                drCalculado("BUY_OR_SELL") = ""
                            End If

                            'Calculo NEGO_PRICE = RATE = Tasa Ejecucion
                            If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                                If NuevoRenglon("TRend").ToString.Length = 0 Then
                                    drCalculado("NEGO_PRICE") = 0
                                    drCalculado("RATE") = 0
                                Else
                                    drCalculado("NEGO_PRICE") = NuevoRenglon("TRend")
                                    drCalculado("RATE") = NuevoRenglon("TRend")
                                End If
                            Else
                                drCalculado("NEGO_PRICE") = 0
                                drCalculado("RATE") = 0
                            End If

                            'Calculo UDI
                            If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                                Dim regUdi() As DataRow

                                regUdi = dtDatosUDI.Select("Fecha = '" + drCalculado("SETTLE_DAT") + "'")

                                If regUdi.Count > 0 Then
                                    drCalculado("UDI") = regUdi(0)("Valor")
                                Else
                                    drCalculado("UDI") = "#N/A"
                                End If
                            Else
                                drCalculado("UDI") = 0
                            End If

                            'Calculo IsUDI
                            If drCalculado("IsVencido") = "FALSO" And drCalculado("XACT_TYP") <> "B" And drCalculado("XACT_TYP") <> "S" And drCalculado("XACT_TYP") <> "VRV" And drCalculado("XACT_TYP") <> "CRV" Then

                                Dim regIsUDI() As DataRow

                                regIsUDI = dtValmer.Select("Instrumento = '" + drCalculado("LongName") + "'")

                                If regIsUDI.Count > 0 Then
                                    If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" And regIsUDI(0)("Moneda") = "MUD" Then
                                        drCalculado("IsUDI") = "UDI"
                                    Else
                                        drCalculado("IsUDI") = ""
                                    End If
                                Else
                                    drCalculado("IsUDI") = "#N/A"
                                End If
                            Else
                                drCalculado("IsUDI") = ""
                            End If

                            'Calculo INST_QTY = Cantidad
                            If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                                If NuevoRenglon("Titulos").ToString.Length = 0 Then
                                    drCalculado("INST_QTY") = 0
                                Else
                                    drCalculado("INST_QTY") = NuevoRenglon("Titulos")
                                End If
                            Else
                                drCalculado("INST_QTY") = 0
                            End If

                            'Calculo INST_PRICE = PRICE_SPOT = Precio
                            If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                                If drCalculado("IsUDI") = "UDI" Then
                                    drCalculado("INST_PRICE") = Convert.ToDouble(NuevoRenglon("Aux4").ToString.Replace(",", "")) / Convert.ToDouble(drCalculado("UDI").ToString.Replace(",", ""))
                                    drCalculado("PRICE_SPOT") = Convert.ToDouble(NuevoRenglon("Aux4").ToString.Replace(",", "")) / Convert.ToDouble(drCalculado("UDI").ToString.Replace(",", ""))
                                Else
                                    drCalculado("INST_PRICE") = NuevoRenglon("Aux4")
                                    drCalculado("PRICE_SPOT") = NuevoRenglon("Aux4")
                                End If
                            Else
                                drCalculado("INST_PRICE") = ""
                                drCalculado("PRICE_SPOT") = ""
                            End If

                            'Calculo BROKER_COD = Intermediario
                            If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsVencido") = "FALSO" And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                                Dim regBroker() As DataRow

                                regBroker = dtBrokers.Select("FAX_NUM = '" + NuevoRenglon("Intermed") + "'")

                                If regBroker.Count > 0 Then
                                    drCalculado("BROKER_COD") = regBroker(0)("BROKER_COD")
                                Else
                                    drCalculado("BROKER_COD") = "#N/A"
                                End If
                            Else
                                drCalculado("BROKER_COD") = ""
                            End If

                            'Calculo ENTITE
                            If drCalculado("IsVencido") = "FALSO" And drCalculado("IsNotPortfolioFound") = "FALSO" And (drCalculado("XACT_TYP") = "CDD" Or drCalculado("XACT_TYP") = "VDD" Or drCalculado("XACT_TYP") = "CRV" Or drCalculado("XACT_TYP") = "VRV" Or drCalculado("XACT_TYP") = "CFF" Or drCalculado("XACT_TYP") = "VFF" Or drCalculado("XACT_TYP") = "EVT" Or drCalculado("XACT_TYP") = "SVT") Then
                                drCalculado("ENTITE") = "ID_XACT"
                            Else
                                If drCalculado("XACT_TYP") = "CRE" And drCalculado("IsVencido") = "FALSO" Then
                                    drCalculado("ENTITE") = "ID_XACT_CONT"
                                Else
                                    If drCalculado("IsVencido") = "FALSO" And (drCalculado("XACT_TYP") = "B" Or drCalculado("XACT_TYP") = "S") Then
                                        drCalculado("ENTITE") = "ID_CHANGE"
                                    Else
                                        drCalculado("ENTITE") = drCalculado("XACT_TYP")
                                    End If
                                End If
                            End If

                            'Calculo NEGO_QUOTE_MOD = NegoQuoteMod
                            If drCalculado("XACT_TYP") = "CDD" Or drCalculado("XACT_TYP") = "VDD" Then
                                drCalculado("NEGO_QUOTE_MOD") = "T"
                            Else
                                drCalculado("NEGO_QUOTE_MOD") = ""
                            End If

                            'Calculo RATE_TYP = TipoRateRepos
                            If drCalculado("ENTITE") = "ID_XACT_CONT" Then
                                drCalculado("RATE_TYP") = "F"
                            Else
                                drCalculado("RATE_TYP") = ""
                            End If

                            'Calculo RATE_EXPR = ExpresionRate
                            If drCalculado("XACT_TYP") = "CDD" Or drCalculado("XACT_TYP") = "VDD" Or drCalculado("XACT_TYP") = "CRE" Then
                                drCalculado("RATE_EXPR") = "post"
                            Else
                                drCalculado("RATE_EXPR") = ""
                            End If

                            'Calculo CONT_START_DAT = EmpiezaRepo
                            If drCalculado("RATE_TYP") = "F" Then
                                drCalculado("CONT_START_DAT") = drCalculado("SETTLE_DAT")
                            Else
                                drCalculado("CONT_START_DAT") = ""
                            End If

                            'Calculo CONT_END_DAT = TerminaRepo
                            If drCalculado("RATE_TYP") = "F" Then
                                Try
                                    drCalculado("CONT_END_DAT") = fvenc.ToString("dd-MM-yyyy")
                                Catch ex As Exception
                                    drCalculado("CONT_END_DAT") = Convert.ToString(fvenc)
                                End Try
                            Else
                                drCalculado("CONT_END_DAT") = ""
                            End If

                            'Calculo INT_CALC_MOD = TipoInteres
                            If drCalculado("RATE_TYP") = "F" Then
                                drCalculado("INT_CALC_MOD") = "L"
                            Else
                                drCalculado("INT_CALC_MOD") = ""
                            End If

                            'Calculo QUOTE_MOD = QuoteModeRepo
                            If drCalculado("RATE_TYP") = "F" Then
                                drCalculado("QUOTE_MOD") = "P"
                            Else
                                drCalculado("QUOTE_MOD") = ""
                            End If

                            'Calculo QTY_EXPR = QtyExprRepo
                            If drCalculado("RATE_TYP") = "F" Then
                                drCalculado("QTY_EXPR") = "Q"
                            Else
                                drCalculado("QTY_EXPR") = ""
                            End If

                            'Calculo FREQ = FrecuenciaRepo
                            If drCalculado("RATE_TYP") = "F" Then
                                drCalculado("FREQ") = "INFI"
                            Else
                                drCalculado("FREQ") = ""
                            End If

                            'Calculo CUR_COD_1 = cur_cod_1FX
                            If NuevoRenglon("Transaccion").ToString.Length > 0 And NuevoRenglon("TV") = "CHD" Then
                                drCalculado("CUR_COD_1") = "USD"
                            Else
                                If NuevoRenglon("Transaccion").ToString.Length > 0 And NuevoRenglon("TV") = "CHE" Then
                                    drCalculado("CUR_COD_1") = "EUR"
                                Else
                                    drCalculado("CUR_COD_1") = ""
                                End If
                            End If

                            'Calculo CUR_COD_2 = cur_cod_2FX
                            If NuevoRenglon("Transaccion").ToString.Length > 0 And (NuevoRenglon("TV") = "CHD" Or NuevoRenglon("TV") = "CHE") Then
                                drCalculado("CUR_COD_2") = "MXN"
                            Else
                                drCalculado("CUR_COD_2") = ""
                            End If

                            'Calculo AMT_CUR_1 = amt1FX
                            If drCalculado("CUR_COD_2").ToString.Length > 0 Then
                                drCalculado("AMT_CUR_1") = NuevoRenglon("Titulos")
                            Else
                                drCalculado("AMT_CUR_1") = ""
                            End If

                            'Calculo CONT_TYP = ContTypFX
                            If drCalculado("CUR_COD_2").ToString.Length > 0 Then
                                drCalculado("CONT_TYP") = "SPOT"
                            Else
                                drCalculado("CONT_TYP") = ""
                            End If

                            'Calculo CUR_LOTSIZE_1 = CurLotsize1
                            If drCalculado("AMT_CUR_1").ToString.Length > 0 Then
                                drCalculado("CUR_LOTSIZE_1") = 1
                            Else
                                drCalculado("CUR_LOTSIZE_1") = ""
                            End If

                            'Calculo CUR_LOTSIZE_2 = CurLotsize2
                            If drCalculado("AMT_CUR_1").ToString.Length > 0 Then
                                drCalculado("CUR_LOTSIZE_2") = 1
                            Else
                                drCalculado("CUR_LOTSIZE_2") = ""
                            End If

                            'Calculo EXT_REF = Usuario
                            If drCalculado("ENTITE").ToString.Length > 0 Then
                                drCalculado("EXT_REF") = "CONTINGENCIA"
                            Else
                                drCalculado("EXT_REF") = ""
                            End If

                            'Calculo AMT_BROKER = ComisionBroker
                            If NuevoRenglon("Aux1").ToString.Length > 0 Then
                                drCalculado("AMT_BROKER") = NuevoRenglon("Aux1")
                            Else
                                drCalculado("AMT_BROKER") = ""
                            End If

                            'Calculo AMT_VAT = ComisionIVA
                            If NuevoRenglon("Aux2").ToString.Length > 0 Then
                                drCalculado("AMT_VAT") = NuevoRenglon("Aux2")
                            Else
                                drCalculado("AMT_VAT") = ""
                            End If

                            drCalculado("NumeroRegistro") = renglon - 9
                            drCalculado("Error") = ""

                            dtDatos.Rows.Add(NuevoRenglon)
                            dtDatos.AcceptChanges()

                            dtDatosCalculados.Rows.Add(drCalculado)
                            dtDatosCalculados.AcceptChanges()
                        Else
                            mensajeDesc = mensajeDesc & hoja.Name & " - L:" & renglon & " No contiene valor EMISORA, SERIE o TIPO VALOR" & vbNewLine
                            Continue For
                        End If
                    Next
                Next

                cmbTipo.SelectedItem = TipoAux

                wbk.Close()

                'If blnEstabaCerrada Then
                '    For Each p As Process In Process.GetProcesses()
                '        If p.ProcessName = "EXCEL" Then
                '            p.Kill()
                '        End If
                '    Next
                'End If

                grdCargaExcel.ItemsSource = dtDatos.DefaultView
                grdCargaExcel.UpdateLayout()

                tabPrincipal.IsSelected = False
                tabTratamiento.IsSelected = True

                If dtDatosCalculados.Rows.Count > 0 Then
                    cmbTipo.IsEnabled = True
                Else
                    cmbTipo.IsEnabled = False
                End If

                Dim queryDeuda = _
                    From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CDD" Or (dato.Field(Of String)("XACT_TYP") = "VDD"))
                    Select dato

                Dim queryCapitales = _
                            From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CRV" Or (dato.Field(Of String)("XACT_TYP") = "VRV"))
                        Select dato

                Dim queryfondos = _
                            From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CFF" Or (dato.Field(Of String)("XACT_TYP") = "VFF"))
                        Select dato

                Dim queryReportos = _
                            From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT_CONT" And dato.Field(Of String)("XACT_TYP") = "CRE"
                        Select dato

                Dim queryChequeras = _
                            From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_CHANGE" And (dato.Field(Of String)("XACT_TYP") = "B" Or (dato.Field(Of String)("XACT_TYP") = "S"))
                        Select dato

                Dim queryVencimiento = _
                    From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsVencido") = "FALSO" And dato.Field(Of String)("ENTITE") = "VREPORTO"
                    Select dato

                Dim queryVencidos = _
                    From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsVencido") = "VERDADERO"
                    Select dato

                Dim queryPortfolios = _
                    From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsNotPortfolioFound") = "VERDADERO"
                    Select dato

                Dim queryCupones = _
                    From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsVencido") = "FALSO" And dato.Field(Of String)("ENTITE") = "CORTACUPON"
                    Select dato

                Dim queryCargados = _
                    From dato In dtDatos.AsEnumerable() Where dato.Field(Of String)(0) <> ""
                    Select dato

                Try
                    txtTotalDeuda.Text = queryDeuda.Count.ToString("###,##0.00")

                    intTotal += queryDeuda.Count
                Catch ex As Exception
                    txtTotalDeuda.Text = "0.00"
                End Try

                Try
                    txtTotalCapitales.Text = queryCapitales.Count.ToString("###,##0.00")

                    intTotal += queryCapitales.Count
                Catch ex As Exception
                    txtTotalCapitales.Text = "0.00"
                End Try


                Try
                    txtTotalFondo.Text = queryfondos.Count.ToString("###,##0.00")

                    intTotal += queryfondos.Count
                Catch ex As Exception
                    txtTotalFondo.Text = "0.00"
                End Try

                Try
                    txtTotalReportos.Text = queryReportos.Count.ToString("###,##0.00")

                    intTotal += queryReportos.Count
                Catch ex As Exception
                    txtTotalReportos.Text = "0.00"
                End Try

                Try
                    txtChequeras.Text = queryChequeras.Count.ToString("###,##0.00")

                    intTotal += queryChequeras.Count
                Catch ex As Exception
                    txtChequeras.Text = "0.00"
                End Try

                Try
                    txtVencimientoReportos.Text = queryVencimiento.Count.ToString("###,##0.00")

                    intTotal += queryVencimiento.Count
                Catch ex As Exception
                    txtVencimientoReportos.Text = "0.00"
                End Try

                Try
                    txtInstrumentosVencidos.Text = queryVencidos.Count.ToString("###,##0.00")

                    intTotal += queryVencidos.Count
                Catch ex As Exception
                    txtInstrumentosVencidos.Text = "0.00"
                End Try

                Try
                    txtPortfolios.Text = queryPortfolios.Count.ToString("###,##0.00")

                    intTotal += queryPortfolios.Count
                Catch ex As Exception
                    txtPortfolios.Text = "0.00"
                End Try

                Try
                    txtCorteCupones.Text = queryCupones.Count.ToString("###,##0.00")

                    intTotal += queryCupones.Count
                Catch ex As Exception
                    txtCorteCupones.Text = "0.00"
                End Try

                txtTotalUno.Text = intTotal.ToString("###,##0.00")

                Try
                    txtTotalDos.Text = queryCargados.Count.ToString("###,##0.00")
                Catch ex As Exception
                    txtTotalDos.Text = "0.00"
                End Try

                If dtDatos.Rows.Count > 0 Then
                    btnRefrescar.IsEnabled = True
                Else
                    btnRefrescar.IsEnabled = False
                End If

                CUtileria.CompletarRegBitacora(intBitacoraCarga)

                Mouse.OverrideCursor = Cursors.Arrow

                If mensajeDesc.Length > 0 Then
                    MessageBox.Show(mensajeDesc, "Carga archivo", MessageBoxButton.OK, MessageBoxImage.Information)
                Else
                    MessageBox.Show("Archivo cargado correctamente", "Carga archivo", MessageBoxButton.OK, MessageBoxImage.Information)
                End If

            End If

        Catch ex As Exception

            Dim intErrorDosArchivo As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "CargaArchivo", ex.Message)
            CUtileria.CompletarRegBitacora(intErrorDosArchivo)

            'If blnEstabaCerrada Then
            '    For Each p As Process In Process.GetProcesses()
            '        If p.ProcessName = "EXCEL" Then
            '            p.Kill()
            '        End If
            '    Next
            'End If

            Mouse.OverrideCursor = Cursors.Arrow

            MessageBox.Show("Error TI500. " & ex.Message, "Carga archivo", MessageBoxButton.OK, MessageBoxImage.Error)
        End Try
    End Sub

    Private Function DiffDiasHabiles(ByVal fecha1 As DateTime, ByVal fecha2 As DateTime) As Integer
        Dim ndias As Integer = 0
        Dim ndias_atras As Integer
        Dim fecha_aux As DateTime
        If fecha1.ToString("dd/MM/yyyy") = fecha2.ToString("dd/MM/yyyy") Then
            Return 1
        End If

        For ndias_atras = 1 To 7 Step 1
            fecha_aux = fecha1.AddDays(ndias_atras)
            If fecha_aux.DayOfWeek() = DayOfWeek.Saturday Or fecha_aux.DayOfWeek() = DayOfWeek.Sunday Then
                Continue For
            Else
                If fechasInhabiles.FindAll(Function(x) x.Fechanolab.ToString("dd/MM/yyyy") = fecha_aux.ToString("dd/MM/yyyy")).Count = 0 Then
                    ndias = ndias + 1
                End If

                If fecha_aux.ToString("dd/MM/yyyy") = fecha2.ToString("dd/MM/yyyy") Then
                    Exit For
                End If
            End If

        Next

        Return ndias
    End Function

    Private Function SumaDiasHabiles(ByVal fecha As DateTime, ByVal ndias As Integer) As DateTime
        Dim ndias_atras As Integer
        Dim fecha_habil As DateTime = fecha
        Dim fecha_aux As DateTime
        Dim ndiashab As Integer = 0
        For ndias_atras = 1 To 7 Step 1
            fecha_aux = fecha.AddDays(ndias_atras)
            If fecha_aux.DayOfWeek() = DayOfWeek.Saturday Or fecha_aux.DayOfWeek() = DayOfWeek.Sunday Then
                Continue For
            Else
                If fechasInhabiles.FindAll(Function(x) x.Fechanolab.ToString("dd/MM/yyyy") = fecha_aux.ToString("dd/MM/yyyy")).Count = 0 Then
                    ndiashab = ndiashab + 1
                End If

                If ndias = ndiashab Then
                    fecha_habil = fecha_aux
                    Exit For
                End If
            End If

        Next

        Return fecha_habil
    End Function

    Private Function CalculaPrecio(ByVal reg As DataRow, ByVal psucio As Double, ByVal tliq As String, ByVal titulos As Double, ByVal importe As Double) As Double
        Dim precio As Double = 0
        If reg("CALCULAR") = 0 Or tliq = "MD" Then
            precio = psucio
        Else
            Select Case reg("TRANSACCION_COVAFSYS")
                Case "C"
                    precio = importe / (titulos * (1 + (Convert.ToDouble(reg("COMISION")) / 100) + (Convert.ToDouble(reg("COMISION")) / 100 * Convert.ToDouble(reg("IMPUESTO")) / 100)))
                Case "V"
                    precio = importe / (titulos * (1 - (Convert.ToDouble(reg("COMISION")) / 100) + (Convert.ToDouble(reg("COMISION")) / 100 * Convert.ToDouble(reg("IMPUESTO")) / 100)))
            End Select

        End If
        Return precio
    End Function

    'Private Sub btnCargaOPDIA_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnCargaOPDIA.Click
    '    Dim dlg As New Microsoft.Win32.OpenFileDialog()
    '    Dim wbk As Workbook
    '    Dim hoja As Worksheet
    '    Dim blnArchivoElegido As Boolean
    '    Dim rango As Range
    '    Dim renglon As Integer, TotalRenglones As Integer
    '    Dim blnEstabaCerrada As Boolean = True
    '    Dim indice As Integer = 0, indiceAux As Integer = 2, intTotal As Integer = 0
    '    Dim strNombreAuxiliar As String
    '    Dim intBitacoraCarga As Integer

    '    Try
    '        dlg.FileName = ""
    '        dlg.DefaultExt = ".png"
    '        dlg.Filter = "Excel documents|*.xls;*.xlsx"

    '        blnArchivoElegido = dlg.ShowDialog()

    '        If blnArchivoElegido Then
    '            intBitacoraCarga = CUtileria.GrabarBitacora("COVAFTLPorvenir", "CargarArchivo", "Carga de archivo Excel para macro COVAFTL Porvenir")

    '            Try
    '                Aplicacion = GetObject(, "Excel.Application")
    '            Catch ex As Exception
    '                Aplicacion = CreateObject("Excel.Application")
    '                blnEstabaCerrada = True
    '            End Try

    '            While indice >= 0
    '                indice = dlg.FileName.IndexOf("\", indiceAux)

    '                If indice > 0 Then
    '                    indiceAux = indice + 1
    '                End If
    '            End While

    '            strNombreAuxiliar = dlg.FileName.Substring(indiceAux, dlg.FileName.Length - indiceAux)

    '            For Each wbAux As Workbook In Aplicacion.Workbooks
    '                If wbAux.Name = strNombreAuxiliar Then
    '                    wbAux.Close()
    '                End If
    '            Next

    '            Mouse.OverrideCursor = Cursors.Wait

    '            grdCargaExcel.ItemsSource = Nothing
    '            grdCargaExcel.Items.Refresh()

    '            grdFicheroTL.ItemsSource = Nothing
    '            grdFicheroTL.Items.Refresh()

    '            Try
    '                wbk = Aplicacion.Workbooks.Open(dlg.FileName)
    '            Catch ex As Exception
    '                Dim intErrorAperturaArchivo As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "CargarArchivo", ex.Message)
    '                CUtileria.CompletarRegBitacora(intErrorAperturaArchivo)

    '                Mouse.OverrideCursor = Cursors.Arrow

    '                MessageBox.Show("Error TI500. Si esta modificando otro libro favor de temrinar e intentar nuevamente. " & ex.Message, "Carga archivo", MessageBoxButton.OK, MessageBoxImage.Error)

    '                Exit Sub
    '            End Try

    '            CargaBanxico()
    '            CargaDatosDECALOG()
    '            CargaValmer()

    '            hoja = wbk.Sheets(1)

    '            rango = hoja.UsedRange

    '            TotalRenglones = rango.Rows.Count + 7

    '            dtDatos.Clear()
    '            dtDatosCalculados.Clear()

    '            For renglon = 9 To TotalRenglones Step 1
    '                Dim NuevoRenglon As DataRow = dtDatos.NewRow()
    '                Dim drCalculado As DataRow = dtDatosCalculados.NewRow()

    '                'Fondo
    '                NuevoRenglon(0) = hoja.Cells(renglon, 1).Value2
    '                'Transaccion
    '                NuevoRenglon(1) = hoja.Cells(renglon, 2).Value2
    '                'Inversión
    '                NuevoRenglon(2) = hoja.Cells(renglon, 3).Value2
    '                'Emisora
    '                NuevoRenglon(3) = hoja.Cells(renglon, 4).Value2
    '                'Serie
    '                NuevoRenglon(4) = hoja.Cells(renglon, 5).Value2
    '                'T.V.
    '                NuevoRenglon(5) = hoja.Cells(renglon, 6).Value2
    '                'Titulos
    '                Try
    '                    NuevoRenglon(6) = Convert.ToDouble(hoja.Cells(renglon, 7).Value2.ToString) '.ToString("###,###")
    '                Catch ex As Exception
    '                    NuevoRenglon(6) = Convert.ToString(hoja.Cells(renglon, 7).Value2)
    '                End Try
    '                'Importe
    '                Try
    '                    NuevoRenglon(7) = Convert.ToDouble(hoja.Cells(renglon, 8).Value2.ToString)
    '                Catch ex As Exception
    '                    NuevoRenglon(7) = 0
    '                End Try
    '                'Tasa
    '                Try
    '                    NuevoRenglon(8) = Convert.ToDouble(hoja.Cells(renglon, 9).Value2.ToString)
    '                Catch ex As Exception
    '                    NuevoRenglon(8) = 0
    '                End Try
    '                'Intermed.
    '                NuevoRenglon(9) = hoja.Cells(renglon, 10).Value2
    '                'Cta. Indeval. Int.
    '                NuevoRenglon(10) = hoja.Cells(renglon, 11).Value2
    '                'CPN
    '                NuevoRenglon(11) = hoja.Cells(renglon, 12).Value2
    '                'Cta. Indeval.
    '                NuevoRenglon(12) = hoja.Cells(renglon, 13).Value2
    '                'Cto. Oper.
    '                NuevoRenglon(13) = hoja.Cells(renglon, 14).Value2
    '                'P. Sucio
    '                Try
    '                    NuevoRenglon(14) = Convert.ToDouble(hoja.Cells(renglon, 15).Value2.ToString).ToString '("##,##0.000000000")
    '                Catch ex As Exception
    '                    NuevoRenglon(14) = Convert.ToString(hoja.Cells(renglon, 15).Value2)
    '                End Try
    '                'T. Rend.
    '                Try
    '                    NuevoRenglon(15) = Convert.ToDouble(hoja.Cells(renglon, 16).Value2.ToString).ToString("##,##0.000000")
    '                Catch ex As Exception
    '                    NuevoRenglon(15) = Convert.ToString(hoja.Cells(renglon, 16).Value2)
    '                End Try
    '                'Pzo
    '                NuevoRenglon(16) = hoja.Cells(renglon, 17).Value2
    '                'F. Reg.                    
    '                Try
    '                    NuevoRenglon(17) = Convert.ToDateTime(hoja.Cells(renglon, 18).Value).ToString("dd/MM/yyyy")
    '                Catch ex As Exception
    '                    NuevoRenglon(17) = Convert.ToString(hoja.Cells(renglon, 18).Value)
    '                End Try
    '                'F. Liquid
    '                Try
    '                    NuevoRenglon(18) = Convert.ToDateTime(hoja.Cells(renglon, 19).Value).ToString("dd/MM/yyyy")
    '                Catch ex As Exception
    '                    NuevoRenglon(18) = Convert.ToString(hoja.Cells(renglon, 19).Value)
    '                End Try
    '                'F. Venc.
    '                Try
    '                    NuevoRenglon(19) = Convert.ToDateTime(hoja.Cells(renglon, 20).Value).ToString("dd/MM/yyyy")
    '                Catch ex As Exception
    '                    NuevoRenglon(19) = Convert.ToString(hoja.Cells(renglon, 20).Value)
    '                End Try
    '                'Liquid.
    '                NuevoRenglon(20) = hoja.Cells(renglon, 21).Value2
    '                'Hora
    '                NuevoRenglon(21) = hoja.Cells(renglon, 22).Text
    '                'N. Orden
    '                NuevoRenglon(22) = hoja.Cells(renglon, 23).Value2
    '                'Cve. Oper.
    '                NuevoRenglon(23) = hoja.Cells(renglon, 24).Value2
    '                'Aux 1
    '                Try
    '                    NuevoRenglon(24) = Convert.ToDouble(hoja.Cells(renglon, 25).Value2.ToString) '.ToString("###,##0.00")
    '                Catch ex As Exception
    '                    NuevoRenglon(24) = 0
    '                End Try
    '                'Aux 2
    '                Try
    '                    NuevoRenglon(25) = Convert.ToDouble(hoja.Cells(renglon, 26).Value2.ToString) '.ToString("###,##0.00")
    '                Catch ex As Exception
    '                    NuevoRenglon(25) = 0
    '                End Try
    '                'Aux 3
    '                Try
    '                    NuevoRenglon(26) = Convert.ToDouble(hoja.Cells(renglon, 27).Value2.ToString) '.ToString("###,##0.00")
    '                Catch ex As Exception
    '                    NuevoRenglon(26) = 0
    '                End Try
    '                'Aux 4
    '                Try
    '                    NuevoRenglon(27) = Convert.ToDouble(hoja.Cells(renglon, 28).Value2.ToString) '.ToString("##,##0.000000000")
    '                Catch ex As Exception
    '                    NuevoRenglon(27) = 0
    '                End Try

    '                'Calculo TipoValorParse
    '                If NuevoRenglon("Fondo").ToString.Length = 0 Then
    '                    drCalculado("TipoValorParse") = ""
    '                Else
    '                    If NuevoRenglon("Fondo").ToString.Length > 0 And NuevoRenglon("TV").ToString <> "1I" And NuevoRenglon("TV").ToString <> "1A" Then
    '                        drCalculado("TipoValorParse") = NuevoRenglon("TV")
    '                    Else
    '                        If NuevoRenglon("TV").ToString = "1I" Then
    '                            drCalculado("TipoValorParse") = "1ISP"
    '                        Else
    '                            If NuevoRenglon("TV").ToString = "1A" Then
    '                                drCalculado("TipoValorParse") = "1ASP"
    '                            End If
    '                        End If
    '                    End If
    '                End If

    '                'Calculo Acronimo
    '                If NuevoRenglon("Fondo").ToString.Length > 0 Then
    '                    drCalculado("Acronimo") = drCalculado("TipoValorParse").ToString.Trim + NuevoRenglon("Emisora").ToString.Trim + NuevoRenglon("Serie").ToString.Trim
    '                Else
    '                    drCalculado("Acronimo") = ""
    '                End If

    '                'Calculo LongName
    '                If NuevoRenglon("Fondo").ToString.Length > 0 Then
    '                    drCalculado("LongName") = NuevoRenglon("TV").ToString.Trim + "_" + NuevoRenglon("Emisora").ToString.Trim + "_" + NuevoRenglon("Serie").ToString.Trim
    '                Else
    '                    drCalculado("LongName") = ""
    '                End If

    '                'Calculo PF_COD = Fondo
    '                drCalculado("PF_COD") = NuevoRenglon("Fondo").ToString.Trim

    '                'Calculo IsVencido
    '                If NuevoRenglon("Fondo").ToString.Length > 0 Then
    '                    If NuevoRenglon("CveOper").ToString = "VENCIMIENTO" Then
    '                        drCalculado("IsVencido") = "VERDADERO"
    '                    Else
    '                        drCalculado("IsVencido") = "FALSO"
    '                    End If
    '                Else
    '                    drCalculado("IsVencido") = ""
    '                End If

    '                'Calculo(IsNotPortfolioFound)
    '                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsVencido") = "FALSO" Then
    '                    If dtPortfolios.Rows.Count > 0 Then
    '                        Dim reg() As DataRow

    '                        reg = dtPortfolios.Select("PF_COD = '" + NuevoRenglon("Fondo").ToString.Trim + "'")

    '                        If reg.Count > 0 Then
    '                            drCalculado("IsNotPortfolioFound") = "FALSO"
    '                        Else
    '                            drCalculado("IsNotPortfolioFound") = "VERDADERO"
    '                        End If
    '                    Else
    '                        drCalculado("IsNotPortfolioFound") = "VERDADERO"
    '                    End If
    '                Else
    '                    drCalculado("IsNotPortfolioFound") = ""
    '                End If

    '                'Calculo SETTLE_DAT = Fecha Liquidacion
    '                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
    '                    Try
    '                        drCalculado("SETTLE_DAT") = Convert.ToDateTime(hoja.Cells(renglon, 19).Value).ToString("dd-MM-yyyy")
    '                    Catch ex As Exception
    '                        drCalculado("SETTLE_DAT") = Convert.ToString(hoja.Cells(renglon, 19).Value)
    '                    End Try
    '                Else
    '                    drCalculado("SETTLE_DAT") = ""
    '                End If

    '                'Calculo XACT_DAT = Fecha Ejecucion
    '                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
    '                    Try
    '                        drCalculado("XACT_DAT") = Convert.ToDateTime(hoja.Cells(renglon, 18).Value).ToString("dd-MM-yyyy")
    '                    Catch ex As Exception
    '                        drCalculado("XACT_DAT") = Convert.ToString(hoja.Cells(renglon, 18).Value)
    '                    End Try
    '                Else
    '                    drCalculado("XACT_DAT") = ""
    '                End If

    '                'Calculo INST_ACR = Instrumento Decalog
    '                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsVencido") = "FALSO" And drCalculado("IsNotPortfolioFound") = "FALSO" Then
    '                    Dim regAux() As DataRow

    '                    regAux = dtInstrumentos.Select("INST_ACR = '" + drCalculado("Acronimo") + "'")

    '                    If regAux.Count > 0 Then
    '                        drCalculado("INST_ACR") = regAux(0)("INST_ACR")
    '                    Else
    '                        drCalculado("INST_ACR") = "#N/A"
    '                    End If
    '                Else
    '                    drCalculado("INST_ACR") = ""
    '                End If

    '                'Calculo XACT_TYP = BUY_OR_SELL = Tipo Transaccion
    '                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
    '                    drCalculado("XACT_TYP") = TipoTransaccion(NuevoRenglon("CveOper"), NuevoRenglon("Transaccion"), NuevoRenglon("Inversion"), NuevoRenglon("TV"))
    '                    drCalculado("BUY_OR_SELL") = TipoTransaccion(NuevoRenglon("CveOper"), NuevoRenglon("Transaccion"), NuevoRenglon("Inversion"), NuevoRenglon("TV"))
    '                Else
    '                    drCalculado("XACT_TYP") = ""
    '                    drCalculado("BUY_OR_SELL") = ""
    '                End If

    '                'Calculo NEGO_PRICE = RATE = Tasa Ejecucion
    '                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
    '                    If NuevoRenglon("TRend").ToString.Length = 0 Then
    '                        drCalculado("NEGO_PRICE") = 0
    '                        drCalculado("RATE") = 0
    '                    Else
    '                        drCalculado("NEGO_PRICE") = NuevoRenglon("TRend")
    '                        drCalculado("RATE") = NuevoRenglon("TRend")
    '                    End If
    '                Else
    '                    drCalculado("NEGO_PRICE") = 0
    '                    drCalculado("RATE") = 0
    '                End If

    '                'Calculo UDI
    '                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
    '                    Dim regUdi() As DataRow

    '                    regUdi = dtDatosUDI.Select("Fecha = '" + drCalculado("SETTLE_DAT") + "'")

    '                    If regUdi.Count > 0 Then
    '                        drCalculado("UDI") = regUdi(0)("Valor")
    '                    Else
    '                        drCalculado("UDI") = "#N/A"
    '                    End If
    '                Else
    '                    drCalculado("UDI") = 0
    '                End If

    '                'Calculo IsUDI
    '                If drCalculado("IsVencido") = "FALSO" And drCalculado("XACT_TYP") <> "B" And drCalculado("XACT_TYP") <> "S" And drCalculado("XACT_TYP") <> "VRV" And drCalculado("XACT_TYP") <> "CRV" Then

    '                    Dim regIsUDI() As DataRow

    '                    regIsUDI = dtValmer.Select("Instrumento = '" + drCalculado("LongName") + "'")

    '                    If regIsUDI.Count > 0 Then
    '                        If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" And regIsUDI(0)("Moneda") = "MUD" Then
    '                            drCalculado("IsUDI") = "UDI"
    '                        Else
    '                            drCalculado("IsUDI") = ""
    '                        End If
    '                    Else
    '                        drCalculado("IsUDI") = "#N/A"
    '                    End If
    '                Else
    '                    drCalculado("IsUDI") = ""
    '                End If

    '                'Calculo INST_QTY = Cantidad
    '                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
    '                    If NuevoRenglon("Titulos").ToString.Length = 0 Then
    '                        drCalculado("INST_QTY") = 0
    '                    Else
    '                        drCalculado("INST_QTY") = NuevoRenglon("Titulos")
    '                    End If
    '                Else
    '                    drCalculado("INST_QTY") = 0
    '                End If

    '                'Calculo INST_PRICE = PRICE_SPOT = Precio
    '                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
    '                    If drCalculado("IsUDI") = "UDI" Then
    '                        drCalculado("INST_PRICE") = Convert.ToDouble(NuevoRenglon("Aux4").ToString.Replace(",", "")) / Convert.ToDouble(drCalculado("UDI").ToString.Replace(",", ""))
    '                        drCalculado("PRICE_SPOT") = Convert.ToDouble(NuevoRenglon("Aux4").ToString.Replace(",", "")) / Convert.ToDouble(drCalculado("UDI").ToString.Replace(",", ""))
    '                    Else
    '                        drCalculado("INST_PRICE") = NuevoRenglon("Aux4")
    '                        drCalculado("PRICE_SPOT") = NuevoRenglon("Aux4")
    '                    End If
    '                Else
    '                    drCalculado("INST_PRICE") = ""
    '                    drCalculado("PRICE_SPOT") = ""
    '                End If

    '                'Calculo BROKER_COD = Intermediario
    '                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsVencido") = "FALSO" And drCalculado("IsNotPortfolioFound") = "FALSO" Then
    '                    Dim regBroker() As DataRow

    '                    regBroker = dtBrokers.Select("FAX_NUM = '" + NuevoRenglon("Intermed") + "'")

    '                    If regBroker.Count > 0 Then
    '                        drCalculado("BROKER_COD") = regBroker(0)("BROKER_COD")
    '                    Else
    '                        drCalculado("BROKER_COD") = "#N/A"
    '                    End If
    '                Else
    '                    drCalculado("BROKER_COD") = ""
    '                End If

    '                'Calculo ENTITE
    '                If drCalculado("IsVencido") = "FALSO" And drCalculado("IsNotPortfolioFound") = "FALSO" And (drCalculado("XACT_TYP") = "CDD" Or drCalculado("XACT_TYP") = "VDD" Or drCalculado("XACT_TYP") = "CRV" Or drCalculado("XACT_TYP") = "VRV" Or drCalculado("XACT_TYP") = "CFF" Or drCalculado("XACT_TYP") = "VFF" Or drCalculado("XACT_TYP") = "EVT" Or drCalculado("XACT_TYP") = "SVT") Then
    '                    drCalculado("ENTITE") = "ID_XACT"
    '                Else
    '                    If drCalculado("XACT_TYP") = "CRE" And drCalculado("IsVencido") = "FALSO" Then
    '                        drCalculado("ENTITE") = "ID_XACT_CONT"
    '                    Else
    '                        If drCalculado("IsVencido") = "FALSO" And (drCalculado("XACT_TYP") = "B" Or drCalculado("XACT_TYP") = "S") Then
    '                            drCalculado("ENTITE") = "ID_CHANGE"
    '                        Else
    '                            drCalculado("ENTITE") = drCalculado("XACT_TYP")
    '                        End If
    '                    End If
    '                End If

    '                'Calculo NEGO_QUOTE_MOD = NegoQuoteMod
    '                If drCalculado("XACT_TYP") = "CDD" Or drCalculado("XACT_TYP") = "VDD" Then
    '                    drCalculado("NEGO_QUOTE_MOD") = "T"
    '                Else
    '                    drCalculado("NEGO_QUOTE_MOD") = ""
    '                End If

    '                'Calculo RATE_TYP = TipoRateRepos
    '                If drCalculado("ENTITE") = "ID_XACT_CONT" Then
    '                    drCalculado("RATE_TYP") = "F"
    '                Else
    '                    drCalculado("RATE_TYP") = ""
    '                End If

    '                'Calculo RATE_EXPR = ExpresionRate
    '                If drCalculado("XACT_TYP") = "CDD" Or drCalculado("XACT_TYP") = "VDD" Or drCalculado("XACT_TYP") = "CRE" Then
    '                    drCalculado("RATE_EXPR") = "post"
    '                Else
    '                    drCalculado("RATE_EXPR") = ""
    '                End If

    '                'Calculo CONT_START_DAT = EmpiezaRepo
    '                If drCalculado("RATE_TYP") = "F" Then
    '                    drCalculado("CONT_START_DAT") = drCalculado("SETTLE_DAT")
    '                Else
    '                    drCalculado("CONT_START_DAT") = ""
    '                End If

    '                'Calculo CONT_END_DAT = TerminaRepo
    '                If drCalculado("RATE_TYP") = "F" Then
    '                    Try
    '                        drCalculado("CONT_END_DAT") = Convert.ToDateTime(hoja.Cells(renglon, 20).Value).ToString("dd-MM-yyyy")
    '                    Catch ex As Exception
    '                        drCalculado("CONT_END_DAT") = Convert.ToString(hoja.Cells(renglon, 20).Value)
    '                    End Try
    '                Else
    '                    drCalculado("CONT_END_DAT") = ""
    '                End If

    '                'Calculo INT_CALC_MOD = TipoInteres
    '                If drCalculado("RATE_TYP") = "F" Then
    '                    drCalculado("INT_CALC_MOD") = "L"
    '                Else
    '                    drCalculado("INT_CALC_MOD") = ""
    '                End If

    '                'Calculo QUOTE_MOD = QuoteModeRepo
    '                If drCalculado("RATE_TYP") = "F" Then
    '                    drCalculado("QUOTE_MOD") = "P"
    '                Else
    '                    drCalculado("QUOTE_MOD") = ""
    '                End If

    '                'Calculo QTY_EXPR = QtyExprRepo
    '                If drCalculado("RATE_TYP") = "F" Then
    '                    drCalculado("QTY_EXPR") = "Q"
    '                Else
    '                    drCalculado("QTY_EXPR") = ""
    '                End If

    '                'Calculo FREQ = FrecuenciaRepo
    '                If drCalculado("RATE_TYP") = "F" Then
    '                    drCalculado("FREQ") = "INFI"
    '                Else
    '                    drCalculado("FREQ") = ""
    '                End If

    '                'Calculo CUR_COD_1 = cur_cod_1FX
    '                If NuevoRenglon("Transaccion").ToString.Length > 0 And NuevoRenglon("TV") = "CHD" Then
    '                    drCalculado("CUR_COD_1") = "USD"
    '                Else
    '                    If NuevoRenglon("Transaccion").ToString.Length > 0 And NuevoRenglon("TV") = "CHE" Then
    '                        drCalculado("CUR_COD_1") = "EUR"
    '                    Else
    '                        drCalculado("CUR_COD_1") = ""
    '                    End If
    '                End If

    '                'Calculo CUR_COD_2 = cur_cod_2FX
    '                If NuevoRenglon("Transaccion").ToString.Length > 0 And (NuevoRenglon("TV") = "CHD" Or NuevoRenglon("TV") = "CHE") Then
    '                    drCalculado("CUR_COD_2") = "MXN"
    '                Else
    '                    drCalculado("CUR_COD_2") = ""
    '                End If

    '                'Calculo AMT_CUR_1 = amt1FX
    '                If drCalculado("CUR_COD_2").ToString.Length > 0 Then
    '                    drCalculado("AMT_CUR_1") = NuevoRenglon("Titulos")
    '                Else
    '                    drCalculado("AMT_CUR_1") = ""
    '                End If

    '                'Calculo CONT_TYP = ContTypFX
    '                If drCalculado("CUR_COD_2").ToString.Length > 0 Then
    '                    drCalculado("CONT_TYP") = "SPOT"
    '                Else
    '                    drCalculado("CONT_TYP") = ""
    '                End If

    '                'Calculo CUR_LOTSIZE_1 = CurLotsize1
    '                If drCalculado("AMT_CUR_1").ToString.Length > 0 Then
    '                    drCalculado("CUR_LOTSIZE_1") = 1
    '                Else
    '                    drCalculado("CUR_LOTSIZE_1") = ""
    '                End If

    '                'Calculo CUR_LOTSIZE_2 = CurLotsize2
    '                If drCalculado("AMT_CUR_1").ToString.Length > 0 Then
    '                    drCalculado("CUR_LOTSIZE_2") = 1
    '                Else
    '                    drCalculado("CUR_LOTSIZE_2") = ""
    '                End If

    '                'Calculo EXT_REF = Usuario
    '                If drCalculado("ENTITE").ToString.Length > 0 Then
    '                    drCalculado("EXT_REF") = "CONTINGENCIA"
    '                Else
    '                    drCalculado("EXT_REF") = ""
    '                End If

    '                'Calculo AMT_BROKER = ComisionBroker
    '                If NuevoRenglon("Aux1").ToString.Length > 0 Then
    '                    drCalculado("AMT_BROKER") = NuevoRenglon("Aux1")
    '                Else
    '                    drCalculado("AMT_BROKER") = ""
    '                End If

    '                'Calculo AMT_VAT = ComisionIVA
    '                If NuevoRenglon("Aux2").ToString.Length > 0 Then
    '                    drCalculado("AMT_VAT") = NuevoRenglon("Aux2")
    '                Else
    '                    drCalculado("AMT_VAT") = ""
    '                End If

    '                drCalculado("NumeroRegistro") = renglon - 9
    '                drCalculado("Error") = 0

    '                dtDatos.Rows.Add(NuevoRenglon)
    '                dtDatos.AcceptChanges()

    '                dtDatosCalculados.Rows.Add(drCalculado)
    '                dtDatosCalculados.AcceptChanges()




    '            Next

    '            cmbTipo.SelectedItem = TipoAux

    '            wbk.Close()

    '            'If blnEstabaCerrada Then
    '            '    For Each p As Process In Process.GetProcesses()
    '            '        If p.ProcessName = "EXCEL" Then
    '            '            p.Kill()
    '            '        End If
    '            '    Next
    '            'End If

    '            grdCargaExcel.ItemsSource = dtDatos.DefaultView
    '            grdCargaExcel.UpdateLayout()

    '            tabPrincipal.IsSelected = False
    '            tabTratamiento.IsSelected = True

    '            If dtDatosCalculados.Rows.Count > 0 Then
    '                cmbTipo.IsEnabled = True
    '            Else
    '                cmbTipo.IsEnabled = False
    '            End If

    '            Dim queryDeuda = _
    '                From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CDD" Or (dato.Field(Of String)("XACT_TYP") = "VDD"))
    '                Select dato

    '            Dim queryCapitales = _
    '                        From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CRV" Or (dato.Field(Of String)("XACT_TYP") = "VRV"))
    '                    Select dato

    '            Dim queryfondos = _
    '                        From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CFF" Or (dato.Field(Of String)("XACT_TYP") = "VFF"))
    '                    Select dato

    '            Dim queryReportos = _
    '                        From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT_CONT" And dato.Field(Of String)("XACT_TYP") = "CRE"
    '                    Select dato

    '            Dim queryChequeras = _
    '                        From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_CHANGE" And (dato.Field(Of String)("XACT_TYP") = "B" Or (dato.Field(Of String)("XACT_TYP") = "S"))
    '                    Select dato

    '            Dim queryVencimiento = _
    '                From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsVencido") = "FALSO" And dato.Field(Of String)("ENTITE") = "VREPORTO"
    '                Select dato

    '            Dim queryVencidos = _
    '                From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsVencido") = "VERDADERO"
    '                Select dato

    '            Dim queryPortfolios = _
    '                From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsNotPortfolioFound") = "VERDADERO"
    '                Select dato

    '            Dim queryCupones = _
    '                From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsVencido") = "FALSO" And dato.Field(Of String)("ENTITE") = "CORTACUPON"
    '                Select dato

    '            Dim queryCargados = _
    '                From dato In dtDatos.AsEnumerable() Where dato.Field(Of String)(0) <> ""
    '                Select dato

    '            Try
    '                txtTotalDeuda.Text = queryDeuda.Count.ToString("###,##0.00")

    '                intTotal += queryDeuda.Count
    '            Catch ex As Exception
    '                txtTotalDeuda.Text = "0.00"
    '            End Try

    '            Try
    '                txtTotalCapitales.Text = queryCapitales.Count.ToString("###,##0.00")

    '                intTotal += queryCapitales.Count
    '            Catch ex As Exception
    '                txtTotalCapitales.Text = "0.00"
    '            End Try


    '            Try
    '                txtTotalFondo.Text = queryfondos.Count.ToString("###,##0.00")

    '                intTotal += queryfondos.Count
    '            Catch ex As Exception
    '                txtTotalFondo.Text = "0.00"
    '            End Try

    '            Try
    '                txtTotalReportos.Text = queryReportos.Count.ToString("###,##0.00")

    '                intTotal += queryReportos.Count
    '            Catch ex As Exception
    '                txtTotalReportos.Text = "0.00"
    '            End Try

    '            Try
    '                txtChequeras.Text = queryChequeras.Count.ToString("###,##0.00")

    '                intTotal += queryChequeras.Count
    '            Catch ex As Exception
    '                txtChequeras.Text = "0.00"
    '            End Try

    '            Try
    '                txtVencimientoReportos.Text = queryVencimiento.Count.ToString("###,##0.00")

    '                intTotal += queryVencimiento.Count
    '            Catch ex As Exception
    '                txtVencimientoReportos.Text = "0.00"
    '            End Try

    '            Try
    '                txtInstrumentosVencidos.Text = queryVencidos.Count.ToString("###,##0.00")

    '                intTotal += queryVencidos.Count
    '            Catch ex As Exception
    '                txtInstrumentosVencidos.Text = "0.00"
    '            End Try

    '            Try
    '                txtPortfolios.Text = queryPortfolios.Count.ToString("###,##0.00")

    '                intTotal += queryPortfolios.Count
    '            Catch ex As Exception
    '                txtPortfolios.Text = "0.00"
    '            End Try

    '            Try
    '                txtCorteCupones.Text = queryCupones.Count.ToString("###,##0.00")

    '                intTotal += queryCupones.Count
    '            Catch ex As Exception
    '                txtCorteCupones.Text = "0.00"
    '            End Try

    '            txtTotalUno.Text = intTotal.ToString("###,##0.00")

    '            Try
    '                txtTotalDos.Text = queryCargados.Count.ToString("###,##0.00")
    '            Catch ex As Exception
    '                txtTotalDos.Text = "0.00"
    '            End Try

    '            If dtDatos.Rows.Count > 0 Then
    '                btnRefrescar.IsEnabled = True
    '            Else
    '                btnRefrescar.IsEnabled = False
    '            End If

    '            CUtileria.CompletarRegBitacora(intBitacoraCarga)

    '            Mouse.OverrideCursor = Cursors.Arrow

    '            MessageBox.Show("Archivo cargado correctamente", "Carga archivo", MessageBoxButton.OK, MessageBoxImage.Information)
    '        End If

    '    Catch ex As Exception

    '        Dim intErrorDosArchivo As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "CargaArchivo", ex.Message)
    '        CUtileria.CompletarRegBitacora(intErrorDosArchivo)

    '        'If blnEstabaCerrada Then
    '        '    For Each p As Process In Process.GetProcesses()
    '        '        If p.ProcessName = "EXCEL" Then
    '        '            p.Kill()
    '        '        End If
    '        '    Next
    '        'End If

    '        Mouse.OverrideCursor = Cursors.Arrow

    '        MessageBox.Show("Error TI500. " & ex.Message, "Carga archivo", MessageBoxButton.OK, MessageBoxImage.Error)
    '    End Try
    'End Sub


    Private Function TipoTransaccion(ByVal CveOper As String, ByVal Transaccion As String, ByVal Inversion As String, ByVal TV As String) As String
        Dim strResultado As String = "XXX"
        Dim Capitales As Integer

        If TV = "1" Or TV = "1C" Or TV = "3" Or TV = "6" Or TV = "41" Or TV = "51" Or TV = "52" Or TV = "53" Or TV = "54" Or TV = "55" Or TV = "81" Or TV = "0" Or TV = "1B" Or TV = "1R" Or TV = "1S" Or TV = "81SP" Or TV = "CF" Or TV = "RC" Or TV = "YY" Or TV = "YYSP" Or TV = "56" Or TV = "56SP" Or TV = "57" Or TV = "57SP" Then
            Capitales = 1
        Else
            Capitales = 0
        End If

        If ((TV = "CHD") Or (TV = "CHE")) And Transaccion = "C" Then
            strResultado = "B"
        ElseIf Capitales = 1 Then
            If Transaccion = "C" And Inversion = "D" Then
                strResultado = "CRV"
            ElseIf Transaccion = "V" And Inversion = "D" Then
                strResultado = "VRV"
            ElseIf Transaccion = "C" And Inversion = "" Then
                strResultado = "EVT"
            ElseIf Transaccion = "V" And Inversion = "" Then
                strResultado = "SVT"
            End If
        ElseIf Capitales = 0 Then
            If Transaccion = "C" And Inversion = "D" Then
                strResultado = "CDD"
            ElseIf Transaccion = "V" And Inversion = "D" Then
                strResultado = "VDD"
            ElseIf Transaccion = "C" And Inversion = "" Then
                strResultado = "EVT"
            ElseIf Transaccion = "V" And Inversion = "" Then
                strResultado = "SVT"
            ElseIf Transaccion = "C" And Inversion = "R" Then
                strResultado = "CRE"
            End If
        End If

        Return strResultado
    End Function
#End Region

#Region "Seleccion Tipo"
    Private Sub cmbTipo_SelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) Handles cmbTipo.SelectionChanged
        Dim TipoElegido As CTipo

        TipoElegido = cmbTipo.SelectedItem

        grdFicheroTL.ItemsSource = Nothing
        grdFicheroTL.Items.Refresh()

        If Not TipoElegido Is Nothing Then
            Dim dtAux As New System.Data.DataTable()
            Dim dtCampos As New System.Data.DataTable()

            Mouse.OverrideCursor = Cursors.Wait

            Try

                dtCampos = COVAFTLServicio.ObtieneCampos(TipoElegido)

                Select Case TipoElegido.Id
                    Case 6
                        Dim query = _
                             From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CDD" Or (dato.Field(Of String)("XACT_TYP") = "VDD"))
                        Select dato

                        If query.Count > 0 Then
                            dtAux = query.CopyToDataTable()

                            lblRegistros.Content = dtAux.Rows.Count.ToString + " Registros de: "
                        Else
                            MessageBox.Show("No existen registros para este tipo", "Selección tipo", MessageBoxButton.OK, MessageBoxImage.Warning)

                            Mouse.OverrideCursor = Cursors.Arrow

                            lblRegistros.Content = "0 Registros de: "

                            grdFicheroTL.Visibility = System.Windows.Visibility.Hidden
                            btnCargaDECALOG.IsEnabled = False

                            Exit Sub
                        End If

                    Case 7
                        Dim query = _
                            From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CRV" Or (dato.Field(Of String)("XACT_TYP") = "VRV"))
                        Select dato

                        If query.Count > 0 Then
                            dtAux = query.CopyToDataTable()

                            lblRegistros.Content = dtAux.Rows.Count.ToString + " Registros de: "
                        Else
                            MessageBox.Show("No existen registros para este tipo", "Selección tipo", MessageBoxButton.OK, MessageBoxImage.Warning)

                            Mouse.OverrideCursor = Cursors.Arrow

                            lblRegistros.Content = "0 Registros de: "

                            grdFicheroTL.Visibility = System.Windows.Visibility.Hidden
                            btnCargaDECALOG.IsEnabled = False

                            Exit Sub
                        End If

                    Case 8
                        Dim query = _
                            From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CFF" Or (dato.Field(Of String)("XACT_TYP") = "VFF"))
                        Select dato

                        If query.Count > 0 Then
                            dtAux = query.CopyToDataTable()

                            lblRegistros.Content = dtAux.Rows.Count.ToString + " Registros de: "
                        Else
                            MessageBox.Show("No existen registros para este tipo", "Selección tipo", MessageBoxButton.OK, MessageBoxImage.Warning)

                            Mouse.OverrideCursor = Cursors.Arrow

                            lblRegistros.Content = "0 Registros de: "

                            grdFicheroTL.Visibility = System.Windows.Visibility.Hidden
                            btnCargaDECALOG.IsEnabled = False

                            Exit Sub
                        End If

                    Case 9
                        Dim query = _
                            From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT_CONT" And dato.Field(Of String)("XACT_TYP") = "CRE"
                        Select dato

                        If query.Count > 0 Then
                            dtAux = query.CopyToDataTable()

                            lblRegistros.Content = dtAux.Rows.Count.ToString + " Registros de: "
                        Else
                            MessageBox.Show("No existen registros para este tipo", "Selección tipo", MessageBoxButton.OK, MessageBoxImage.Warning)

                            Mouse.OverrideCursor = Cursors.Arrow

                            lblRegistros.Content = "0 Registros de: "

                            grdFicheroTL.Visibility = System.Windows.Visibility.Hidden
                            btnCargaDECALOG.IsEnabled = False

                            Exit Sub
                        End If

                    Case 10
                        Dim query = _
                            From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_CHANGE" And (dato.Field(Of String)("XACT_TYP") = "B" Or (dato.Field(Of String)("XACT_TYP") = "S"))
                        Select dato

                        If query.Count > 0 Then
                            dtAux = query.CopyToDataTable()

                            lblRegistros.Content = dtAux.Rows.Count.ToString + " Registros de: "
                        Else
                            MessageBox.Show("No existen registros para este tipo", "Selección tipo", MessageBoxButton.OK, MessageBoxImage.Warning)

                            Mouse.OverrideCursor = Cursors.Arrow

                            lblRegistros.Content = "0 Registros de: "

                            grdFicheroTL.Visibility = System.Windows.Visibility.Hidden
                            btnCargaDECALOG.IsEnabled = False

                            Exit Sub
                        End If

                    Case 11
                        Dim query = _
                            From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "EVT" Or (dato.Field(Of String)("XACT_TYP") = "SVT"))
                        Select dato

                        If query.Count > 0 Then
                            dtAux = query.CopyToDataTable()

                            lblRegistros.Content = dtAux.Rows.Count.ToString + " Registros de: "
                        Else
                            MessageBox.Show("No existen registros para este tipo", "Selección tipo", MessageBoxButton.OK, MessageBoxImage.Warning)

                            Mouse.OverrideCursor = Cursors.Arrow

                            lblRegistros.Content = "0 Registros de: "

                            grdFicheroTL.Visibility = System.Windows.Visibility.Hidden
                            btnCargaDECALOG.IsEnabled = False

                            Exit Sub
                        End If

                    Case Else
                        lblRegistros.Content = "0 Registros de: "
                End Select

                grdFicheroTL.Columns.Clear()

                For Each strCampo As DataRow In dtCampos.Rows
                    Dim dgtcCampo As New DataGridTextColumn()

                    dgtcCampo.Header = strCampo("CAMPO_DESC")
                    dgtcCampo.IsReadOnly = True
                    dgtcCampo.Binding = New Binding(strCampo("CAMPO_DESC"))

                    grdFicheroTL.Columns.Add(dgtcCampo)
                Next

                Dim dgtcCampoAuxiliar As New DataGridTextColumn()

                dgtcCampoAuxiliar.Header = "Numero Registro"
                dgtcCampoAuxiliar.IsReadOnly = True
                dgtcCampoAuxiliar.Binding = New Binding("NumeroRegistro")
                dgtcCampoAuxiliar.Visibility = System.Windows.Visibility.Hidden

                grdFicheroTL.Columns.Add(dgtcCampoAuxiliar)

                For Each strFormula As DataRow In dtCampos.Rows
                    If strFormula("CAMPO_FORMULA").ToString.Length > 0 Then
                        dtAux.Columns(strFormula("CAMPO_DESC")).Expression = strFormula("CAMPO_FORMULA").ToString
                    End If
                Next

                grdFicheroTL.ItemsSource = dtAux.DefaultView
                lstUltimosInstrumentos.Clear()

                intErrores = 0

                If grdFicheroTL.Items.Count > 0 Then
                    For Each drVAux As DataRowView In grdFicheroTL.Items
                        If drVAux("INST_ACR") = "#N/A" And (TipoElegido.Id = 6 Or TipoElegido.Id = 9 Or TipoElegido.Id = 11) Then

                            lstUltimosInstrumentos.Add(New CInstrumento(drVAux("LongName")))

                            drVAux("INST_ACR") = ""

                            drVAux("Error") = drVAux("Error") & "INST_ACR,"
                        Else
                            For Each drCampo As DataRow In dtCampos.Rows
                                If drCampo("CAMPO_DESC") <> "AMT_BROKER" And drCampo("CAMPO_DESC") <> "AMT_VAT" Then
                                    If drCampo("CAMPO_DESC") <> "NEGO_PRICE" And drCampo("CAMPO_DESC") <> "RATE" Then
                                        If drVAux(drCampo("CAMPO_DESC")) = "#N/A" Or drVAux(drCampo("CAMPO_DESC")) = "" Or drVAux(drCampo("CAMPO_DESC")).ToString.Length = 0 Or drVAux(drCampo("CAMPO_DESC")) = "0" Then
                                            drVAux("Error") = drVAux("Error") & drCampo("CAMPO_DESC") & ","
                                            intErrores += 1
                                        End If
                                    Else
                                        If drVAux(drCampo("CAMPO_DESC")) = 0 Then  'SOPORTE:2014/06/18 15:00, ID:2
                                            drVAux("Error") = drVAux("Error") & drCampo("CAMPO_DESC") & ","
                                            intErrores += 1
                                        End If
                                    End If
                                End If
                            Next
                        End If
                    Next

                    grdFicheroTL.Visibility = System.Windows.Visibility.Visible
                    btnCargaDECALOG.IsEnabled = True
                Else
                    grdFicheroTL.Visibility = System.Windows.Visibility.Hidden
                    btnCargaDECALOG.IsEnabled = False
                End If

                grdFicheroTL.UpdateLayout()
                grdFicheroTL.Focus()
                showErrors()
                Mouse.OverrideCursor = Cursors.Arrow
            Catch ex As Exception
                Mouse.OverrideCursor = Cursors.Arrow

                MessageBox.Show("Error TI500. " & ex.Message, "Selección tipo", MessageBoxButton.OK, MessageBoxImage.Error)
            End Try
        End If
    End Sub

    'Private Sub grdFicheroTL_LoadingRow(ByVal sender As System.Object, ByVal e As System.Windows.Controls.DataGridRowEventArgs) Handles grdFicheroTL.LoadingRow
    '    Try
    '        Dim drvColor As DataRowView = DirectCast(e.Row.DataContext, DataRowView)
    '        Dim errors As String() = drvColor("Error").ToString.Split(",")
    '        Dim dgc As DataGridCell
    '        For Each campo As String In errors
    '            dgc = getCell(e.Row.GetIndex(), 1, grdFicheroTL)
    '            dgc.Background = New SolidColorBrush(Colors.Red)
    '        Next
    '        'If drvColor("Error") = 1 Then
    '        'MessageBox.Show(e.Row.GetIndex())
    '        'e.Row.Background = New SolidColorBrush(Colors.Red)
    '        'End If
    '    Catch ex As Exception

    '    End Try
    'End Sub

    Private Sub showErrors()
        Dim celda As DataGridCell
        Dim dato As DataRowView
        For fila As Integer = 0 To (Me.grdFicheroTL.Items.Count() - 1)
            dato = DirectCast(Me.grdFicheroTL.Items(fila), DataRowView)
            For columna As Integer = 0 To (Me.grdFicheroTL.Columns.Count() - 1)
                If dato("Error").ToString().Contains(Me.grdFicheroTL.Columns(columna).Header & ",") Then
                    celda = getCell(fila, columna, Me.grdFicheroTL)
                    celda.Background = Brushes.Red
                    celda.Foreground = Brushes.White
                    celda.BorderBrush = Brushes.Red
                End If
            Next
        Next
    End Sub

    Public Function getCell(ByVal row As Integer, ByVal column As Integer, ByRef dg As DataGrid) As DataGridCell
        Dim rowContainer As DataGridRow = dg.ItemContainerGenerator.ContainerFromIndex(row)
        Dim presenter As DataGridCellsPresenter = GetVisualChild(Of DataGridCellsPresenter)(rowContainer)

        Dim cell As DataGridCell = DirectCast(presenter.ItemContainerGenerator.ContainerFromIndex(column), DataGridCell)
        If cell Is Nothing Then
            dg.ScrollIntoView(rowContainer, dg.Columns(column))
            cell = DirectCast(presenter.ItemContainerGenerator.ContainerFromIndex(column), DataGridCell)
        End If
        Return cell
    End Function

    Public Overloads Function GetVisualChild(Of T As Visual)(ByVal parent As Visual) As T
        Dim child As T = Nothing
        Dim numVisuals As Integer = VisualTreeHelper.GetChildrenCount(parent)
        For i As Integer = 0 To numVisuals - 1
            Dim v As Visual = DirectCast(VisualTreeHelper.GetChild(parent, i), Visual)
            child = TryCast(v, T)
            If child Is Nothing Then
                child = GetVisualChild(Of T)(v)
            End If
            If child IsNot Nothing Then
                Exit For
            End If
        Next
        Return child
    End Function

#End Region

#Region "Ver detalle"
    Private Sub grdFicheroTL_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles grdFicheroTL.MouseDoubleClick
        Dim dep As DependencyObject = e.OriginalSource
        Dim indice As Integer

        Mouse.OverrideCursor = Cursors.Wait

        While dep IsNot Nothing
            Dim tipo As Type = dep.GetType()

            If tipo.Name.Equals("DataGridRow") Then

                Dim dgrAux As DataGridRow = CType(dep, DataGridRow)
                Dim drvIndice As DataRowView = dgrAux.Item

                grdFicheroTL.SelectedItem = Nothing
                dgrAux.IsSelected = True

                indice = drvIndice("NumeroRegistro")

                grdCargaExcel.SelectedItem = Nothing

                grdCargaExcel.SelectedItem = grdCargaExcel.Items(indice)
                grdCargaExcel.ScrollIntoView(grdCargaExcel.Items(indice))
                grdCargaExcel.Focus()

                tabPrincipal.IsSelected = False
                tabTratamiento.IsSelected = True

                Mouse.OverrideCursor = Cursors.Arrow

                Exit While
            End If

            dep = VisualTreeHelper.GetParent(dep)
        End While

        Mouse.OverrideCursor = Cursors.Arrow
    End Sub

    Private Sub grdFicheroTL_PreviewKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.KeyEventArgs) Handles grdFicheroTL.PreviewKeyDown
        If e.Key = Key.Enter Then
            Dim dep As DependencyObject = e.OriginalSource
            Dim indice As Integer

            Mouse.OverrideCursor = Cursors.Wait

            While dep IsNot Nothing
                Dim tipo As Type = dep.GetType()

                If tipo.Name.Equals("DataGridCell") Then

                    Dim celda As DataGridCell = CType(dep, DataGridCell)

                    Dim di As DataGridCellInfo = New DataGridCellInfo(celda)

                    Dim drv As DataRowView = DirectCast(di.Item, DataRowView)

                    indice = drv("NumeroRegistro")

                    grdCargaExcel.SelectedItem = Nothing

                    grdCargaExcel.SelectedItem = grdCargaExcel.Items(indice)
                    grdCargaExcel.ScrollIntoView(grdCargaExcel.Items(indice))
                    grdCargaExcel.Focus()

                    tabPrincipal.IsSelected = False
                    tabTratamiento.IsSelected = True

                    Mouse.OverrideCursor = Cursors.Arrow

                    Exit While
                End If

                dep = VisualTreeHelper.GetParent(dep)
            End While

            Mouse.OverrideCursor = Cursors.Arrow
        End If
    End Sub
#End Region

#Region "Recarga de catalogos DECALOG"
    Private Sub btnRefrescar_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnRefrescar.Click
        Dim intBitacoraRefresca As Integer, intTotal As Integer = 0

        Try
            Dim intRenglonAux As Integer = 0

            intBitacoraRefresca = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Recalcula información", "Se recalcula la información, ya que se cargan nuevamente los catálogos de DECALOG")

            Mouse.OverrideCursor = Cursors.Wait

            CargaDatosDECALOG()

            dtDatosCalculados.Clear()

            grdFicheroTL.ItemsSource = Nothing
            grdFicheroTL.Items.Refresh()

            For Each NuevoRenglon As DataRow In dtDatos.Rows
                Dim drCalculado As DataRow = dtDatosCalculados.NewRow()

                'Calculo TipoValorParse
                If NuevoRenglon("Fondo").ToString.Length = 0 Then
                    drCalculado("TipoValorParse") = ""
                Else
                    If NuevoRenglon("Fondo").ToString.Length > 0 And NuevoRenglon("TV").ToString <> "1I" And NuevoRenglon("TV").ToString <> "1A" Then
                        drCalculado("TipoValorParse") = NuevoRenglon("TV")
                    Else
                        If NuevoRenglon("TV").ToString = "1I" Then
                            drCalculado("TipoValorParse") = "1ISP"
                        Else
                            If NuevoRenglon("TV").ToString = "1A" Then
                                drCalculado("TipoValorParse") = "1ASP"
                            End If
                        End If
                    End If
                End If

                'Calculo Acronimo
                If NuevoRenglon("Fondo").ToString.Length > 0 Then
                    drCalculado("Acronimo") = drCalculado("TipoValorParse").ToString.Trim + NuevoRenglon("Emisora").ToString.Trim + NuevoRenglon("Serie").ToString.Trim
                Else
                    drCalculado("Acronimo") = ""
                End If

                'Calculo LongName
                If NuevoRenglon("Fondo").ToString.Length > 0 Then
                    drCalculado("LongName") = NuevoRenglon("TV").ToString.Trim + "_" + NuevoRenglon("Emisora").ToString.Trim + "_" + NuevoRenglon("Serie").ToString.Trim
                Else
                    drCalculado("LongName") = ""
                End If

                'Calculo PF_COD = Fondo
                drCalculado("PF_COD") = NuevoRenglon("Fondo").ToString.Trim

                'Calculo IsVencido
                If NuevoRenglon("Fondo").ToString.Length > 0 Then
                    If NuevoRenglon("CveOper").ToString = "VENCIMIENTO" Then
                        drCalculado("IsVencido") = "VERDADERO"
                    Else
                        drCalculado("IsVencido") = "FALSO"
                    End If
                Else
                    drCalculado("IsVencido") = ""
                End If

                'Calculo(IsNotPortfolioFound)
                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsVencido") = "FALSO" Then
                    If dtPortfolios.Rows.Count > 0 Then
                        Dim reg() As DataRow

                        reg = dtPortfolios.Select("PF_COD = '" + NuevoRenglon("Fondo").ToString.Trim + "'")

                        If reg.Count > 0 Then
                            drCalculado("IsNotPortfolioFound") = "FALSO"
                        Else
                            drCalculado("IsNotPortfolioFound") = "VERDADERO"
                        End If
                    Else
                        drCalculado("IsNotPortfolioFound") = "VERDADERO"
                    End If
                Else
                    drCalculado("IsNotPortfolioFound") = ""
                End If

                'Calculo SETTLE_DAT = Fecha Liquidacion
                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                    Try
                        drCalculado("SETTLE_DAT") = Convert.ToDateTime(NuevoRenglon("FLiquid")).ToString("dd-MM-yyyy")
                    Catch ex As Exception
                        drCalculado("SETTLE_DAT") = Convert.ToString(NuevoRenglon("FLiquid"))
                    End Try
                Else
                    drCalculado("SETTLE_DAT") = ""
                End If

                'Calculo XACT_DAT = Fecha Ejecucion
                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                    Try
                        drCalculado("XACT_DAT") = Convert.ToDateTime(NuevoRenglon("FReg")).ToString("dd-MM-yyyy")
                    Catch ex As Exception
                        drCalculado("XACT_DAT") = Convert.ToString(NuevoRenglon("FReg"))
                    End Try
                Else
                    drCalculado("XACT_DAT") = ""
                End If

                'Calculo INST_ACR = Instrumento Decalog
                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsVencido") = "FALSO" And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                    Dim regAux() As DataRow

                    regAux = dtInstrumentos.Select("INST_ACR = '" + drCalculado("Acronimo") + "'")

                    If regAux.Count > 0 Then
                        drCalculado("INST_ACR") = regAux(0)("INST_ACR")
                    Else
                        drCalculado("INST_ACR") = "#N/A"
                    End If
                Else
                    drCalculado("INST_ACR") = ""
                End If

                'Calculo XACT_TYP = BUY_OR_SELL = Tipo Transaccion
                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                    drCalculado("XACT_TYP") = TipoTransaccion(NuevoRenglon("CveOper"), NuevoRenglon("Transaccion"), NuevoRenglon("Inversion"), NuevoRenglon("TV"))
                    drCalculado("BUY_OR_SELL") = TipoTransaccion(NuevoRenglon("CveOper"), NuevoRenglon("Transaccion"), NuevoRenglon("Inversion"), NuevoRenglon("TV"))
                Else
                    drCalculado("XACT_TYP") = ""
                    drCalculado("BUY_OR_SELL") = ""
                End If

                'Calculo NEGO_PRICE = RATE = Tasa Ejecucion
                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                    If NuevoRenglon("TRend").ToString.Length = 0 Then
                        drCalculado("NEGO_PRICE") = 0
                        drCalculado("RATE") = 0
                    Else
                        drCalculado("NEGO_PRICE") = NuevoRenglon("TRend")
                        drCalculado("RATE") = NuevoRenglon("TRend")
                    End If
                Else
                    drCalculado("NEGO_PRICE") = 0
                    drCalculado("RATE") = 0
                End If

                'Calculo UDI
                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                    Dim regUdi() As DataRow

                    regUdi = dtDatosUDI.Select("Fecha = '" + drCalculado("SETTLE_DAT") + "'")

                    If regUdi.Count > 0 Then
                        drCalculado("UDI") = regUdi(0)("Valor")
                    Else
                        drCalculado("UDI") = "#N/A"
                    End If
                Else
                    drCalculado("UDI") = 0
                End If

                'Calculo IsUDI
                If drCalculado("IsVencido") = "FALSO" And drCalculado("XACT_TYP") <> "B" And drCalculado("XACT_TYP") <> "S" And drCalculado("XACT_TYP") <> "VRV" And drCalculado("XACT_TYP") <> "CRV" Then

                    Dim regIsUDI() As DataRow

                    regIsUDI = dtValmer.Select("Instrumento = '" + drCalculado("LongName") + "'")

                    If regIsUDI.Count > 0 Then
                        If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" And regIsUDI(0)("Moneda") = "MUD" Then
                            drCalculado("IsUDI") = "UDI"
                        Else
                            drCalculado("IsUDI") = ""
                        End If
                    Else
                        drCalculado("IsUDI") = "#N/A"
                    End If
                Else
                    drCalculado("IsUDI") = ""
                End If

                'Calculo INST_QTY = Cantidad
                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                    If NuevoRenglon("Titulos").ToString.Length = 0 Then
                        drCalculado("INST_QTY") = 0
                    Else
                        drCalculado("INST_QTY") = NuevoRenglon("Titulos")
                    End If
                Else
                    drCalculado("INST_QTY") = 0
                End If

                'Calculo INST_PRICE = PRICE_SPOT = Precio
                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                    If drCalculado("IsUDI") = "UDI" Then
                        drCalculado("INST_PRICE") = Convert.ToDouble(NuevoRenglon("Aux4").ToString.Replace(",", "")) / Convert.ToDouble(drCalculado("UDI").ToString.Replace(",", ""))
                        drCalculado("PRICE_SPOT") = Convert.ToDouble(NuevoRenglon("Aux4").ToString.Replace(",", "")) / Convert.ToDouble(drCalculado("UDI").ToString.Replace(",", ""))
                    Else
                        drCalculado("INST_PRICE") = NuevoRenglon("Aux4")
                        drCalculado("PRICE_SPOT") = NuevoRenglon("Aux4")
                    End If
                Else
                    drCalculado("INST_PRICE") = ""
                    drCalculado("PRICE_SPOT") = ""
                End If

                'Calculo BROKER_COD = Intermediario
                If NuevoRenglon("Fondo").ToString.Length > 0 And drCalculado("IsVencido") = "FALSO" And drCalculado("IsNotPortfolioFound") = "FALSO" Then
                    Dim regBroker() As DataRow

                    regBroker = dtBrokers.Select("FAX_NUM = '" + NuevoRenglon("Intermed") + "'")

                    If regBroker.Count > 0 Then
                        drCalculado("BROKER_COD") = regBroker(0)("BROKER_COD")
                    Else
                        drCalculado("BROKER_COD") = "#N/A"
                    End If
                Else
                    drCalculado("BROKER_COD") = ""
                End If

                'Calculo ENTITE
                If drCalculado("IsVencido") = "FALSO" And drCalculado("IsNotPortfolioFound") = "FALSO" And (drCalculado("XACT_TYP") = "CDD" Or drCalculado("XACT_TYP") = "VDD" Or drCalculado("XACT_TYP") = "CRV" Or drCalculado("XACT_TYP") = "VRV" Or drCalculado("XACT_TYP") = "CFF" Or drCalculado("XACT_TYP") = "VFF" Or drCalculado("XACT_TYP") = "EVT" Or drCalculado("XACT_TYP") = "SVT") Then
                    drCalculado("ENTITE") = "ID_XACT"
                Else
                    If drCalculado("XACT_TYP") = "CRE" And drCalculado("IsVencido") = "FALSO" Then
                        drCalculado("ENTITE") = "ID_XACT_CONT"
                    Else
                        If drCalculado("IsVencido") = "FALSO" And (drCalculado("XACT_TYP") = "B" Or drCalculado("XACT_TYP") = "S") Then
                            drCalculado("ENTITE") = "ID_CHANGE"
                        Else
                            drCalculado("ENTITE") = drCalculado("XACT_TYP")
                        End If
                    End If
                End If

                'Calculo NEGO_QUOTE_MOD = NegoQuoteMod
                If drCalculado("XACT_TYP") = "CDD" Or drCalculado("XACT_TYP") = "VDD" Then
                    drCalculado("NEGO_QUOTE_MOD") = "T"
                Else
                    drCalculado("NEGO_QUOTE_MOD") = ""
                End If

                'Calculo RATE_TYP = TipoRateRepos
                If drCalculado("ENTITE") = "ID_XACT_CONT" Then
                    drCalculado("RATE_TYP") = "F"
                Else
                    drCalculado("RATE_TYP") = ""
                End If

                'Calculo RATE_EXPR = ExpresionRate
                If drCalculado("XACT_TYP") = "CDD" Or drCalculado("XACT_TYP") = "VDD" Or drCalculado("XACT_TYP") = "CRE" Then
                    drCalculado("RATE_EXPR") = "post"
                Else
                    drCalculado("RATE_EXPR") = ""
                End If

                'Calculo CONT_START_DAT = EmpiezaRepo
                If drCalculado("RATE_TYP") = "F" Then
                    drCalculado("CONT_START_DAT") = drCalculado("SETTLE_DAT")
                Else
                    drCalculado("CONT_START_DAT") = ""
                End If

                'Calculo CONT_END_DAT = TerminaRepo
                If drCalculado("RATE_TYP") = "F" Then
                    Try
                        drCalculado("CONT_END_DAT") = Convert.ToDateTime(NuevoRenglon("FVenc")).ToString("dd-MM-yyyy")
                    Catch ex As Exception
                        drCalculado("CONT_END_DAT") = Convert.ToString(NuevoRenglon("FVenc"))
                    End Try
                Else
                    drCalculado("CONT_END_DAT") = ""
                End If

                'Calculo INT_CALC_MOD = TipoInteres
                If drCalculado("RATE_TYP") = "F" Then
                    drCalculado("INT_CALC_MOD") = "L"
                Else
                    drCalculado("INT_CALC_MOD") = ""
                End If

                'Calculo QUOTE_MOD = QuoteModeRepo
                If drCalculado("RATE_TYP") = "F" Then
                    drCalculado("QUOTE_MOD") = "P"
                Else
                    drCalculado("QUOTE_MOD") = ""
                End If

                'Calculo QTY_EXPR = QtyExprRepo
                If drCalculado("RATE_TYP") = "F" Then
                    drCalculado("QTY_EXPR") = "Q"
                Else
                    drCalculado("QTY_EXPR") = ""
                End If

                'Calculo FREQ = FrecuenciaRepo
                If drCalculado("RATE_TYP") = "F" Then
                    drCalculado("FREQ") = "INFI"
                Else
                    drCalculado("FREQ") = ""
                End If

                'Calculo CUR_COD_1 = cur_cod_1FX
                If NuevoRenglon("Transaccion").ToString.Length > 0 And NuevoRenglon("TV") = "CHD" Then
                    drCalculado("CUR_COD_1") = "USD"
                Else
                    If NuevoRenglon("Transaccion").ToString.Length > 0 And NuevoRenglon("TV") = "CHE" Then
                        drCalculado("CUR_COD_1") = "EUR"
                    Else
                        drCalculado("CUR_COD_1") = ""
                    End If
                End If

                'Calculo CUR_COD_2 = cur_cod_2FX
                If NuevoRenglon("Transaccion").ToString.Length > 0 And (NuevoRenglon("TV") = "CHD" Or NuevoRenglon("TV") = "CHE") Then
                    drCalculado("CUR_COD_2") = "MXN"
                Else
                    drCalculado("CUR_COD_2") = ""
                End If

                'Calculo AMT_CUR_1 = amt1FX
                If drCalculado("CUR_COD_2").ToString.Length > 0 Then
                    drCalculado("AMT_CUR_1") = NuevoRenglon("Titulos")
                Else
                    drCalculado("AMT_CUR_1") = ""
                End If

                'Calculo CONT_TYP = ContTypFX
                If drCalculado("CUR_COD_2").ToString.Length > 0 Then
                    drCalculado("CONT_TYP") = "SPOT"
                Else
                    drCalculado("CONT_TYP") = ""
                End If

                'Calculo CUR_LOTSIZE_1 = CurLotsize1
                If drCalculado("AMT_CUR_1").ToString.Length > 0 Then
                    drCalculado("CUR_LOTSIZE_1") = 1
                Else
                    drCalculado("CUR_LOTSIZE_1") = ""
                End If

                'Calculo CUR_LOTSIZE_2 = CurLotsize2
                If drCalculado("AMT_CUR_1").ToString.Length > 0 Then
                    drCalculado("CUR_LOTSIZE_2") = 1
                Else
                    drCalculado("CUR_LOTSIZE_2") = ""
                End If

                'Calculo EXT_REF = Usuario
                If drCalculado("ENTITE").ToString.Length > 0 Then
                    drCalculado("EXT_REF") = "CONTINGENCIA"
                Else
                    drCalculado("EXT_REF") = ""
                End If

                'Calculo AMT_BROKER = ComisionBroker
                If NuevoRenglon("Aux1").ToString.Length > 0 Then
                    drCalculado("AMT_BROKER") = NuevoRenglon("Aux1")
                Else
                    drCalculado("AMT_BROKER") = ""
                End If

                'Calculo AMT_VAT = ComisionIVA
                If NuevoRenglon("Aux2").ToString.Length > 0 Then
                    drCalculado("AMT_VAT") = NuevoRenglon("Aux2")
                Else
                    drCalculado("AMT_VAT") = ""
                End If

                drCalculado("NumeroRegistro") = intRenglonAux
                drCalculado("Error") = ""

                dtDatosCalculados.Rows.Add(drCalculado)
                dtDatosCalculados.AcceptChanges()

                intRenglonAux += 1
            Next

            cmbTipo.SelectedItem = TipoAux

            If dtDatosCalculados.Rows.Count > 0 Then
                cmbTipo.IsEnabled = True
            Else
                cmbTipo.IsEnabled = False
            End If

            Dim queryDeuda = _
                From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CDD" Or (dato.Field(Of String)("XACT_TYP") = "VDD"))
                Select dato

            Dim queryCapitales = _
                        From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CRV" Or (dato.Field(Of String)("XACT_TYP") = "VRV"))
                    Select dato

            Dim queryfondos = _
                        From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT" And (dato.Field(Of String)("XACT_TYP") = "CFF" Or (dato.Field(Of String)("XACT_TYP") = "VFF"))
                    Select dato

            Dim queryReportos = _
                        From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_XACT_CONT" And dato.Field(Of String)("XACT_TYP") = "CRE"
                    Select dato

            Dim queryChequeras = _
                        From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("ENTITE") = "ID_CHANGE" And (dato.Field(Of String)("XACT_TYP") = "B" Or (dato.Field(Of String)("XACT_TYP") = "S"))
                    Select dato

            Dim queryVencimiento = _
                From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsVencido") = "FALSO" And dato.Field(Of String)("ENTITE") = "VREPORTO"
                Select dato

            Dim queryVencidos = _
                From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsVencido") = "VERDADERO"
                Select dato

            Dim queryPortfolios = _
                From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsNotPortfolioFound") = "VERDADERO"
                Select dato

            Dim queryCupones = _
                From dato In dtDatosCalculados.AsEnumerable() Where dato.Field(Of String)("IsVencido") = "FALSO" And dato.Field(Of String)("ENTITE") = "CORTACUPON"
                Select dato

            Dim queryCargados = _
                From dato In dtDatos.AsEnumerable() Where dato.Field(Of String)(0) <> ""
                Select dato

            Try
                txtTotalDeuda.Text = queryDeuda.Count.ToString("###,##0.00")

                intTotal += queryDeuda.Count
            Catch ex As Exception
                txtTotalDeuda.Text = "0.00"
            End Try

            Try
                txtTotalCapitales.Text = queryCapitales.Count.ToString("###,##0.00")

                intTotal += queryCapitales.Count
            Catch ex As Exception
                txtTotalCapitales.Text = "0.00"
            End Try


            Try
                txtTotalFondo.Text = queryfondos.Count.ToString("###,##0.00")

                intTotal += queryfondos.Count
            Catch ex As Exception
                txtTotalFondo.Text = "0.00"
            End Try

            Try
                txtTotalReportos.Text = queryReportos.Count.ToString("###,##0.00")

                intTotal += queryReportos.Count
            Catch ex As Exception
                txtTotalReportos.Text = "0.00"
            End Try

            Try
                txtChequeras.Text = queryChequeras.Count.ToString("###,##0.00")

                intTotal += queryChequeras.Count
            Catch ex As Exception
                txtChequeras.Text = "0.00"
            End Try

            Try
                txtVencimientoReportos.Text = queryVencimiento.Count.ToString("###,##0.00")

                intTotal += queryVencimiento.Count
            Catch ex As Exception
                txtVencimientoReportos.Text = "0.00"
            End Try

            Try
                txtInstrumentosVencidos.Text = queryVencidos.Count.ToString("###,##0.00")

                intTotal += queryVencidos.Count
            Catch ex As Exception
                txtInstrumentosVencidos.Text = "0.00"
            End Try

            Try
                txtPortfolios.Text = queryPortfolios.Count.ToString("###,##0.00")

                intTotal += queryPortfolios.Count
            Catch ex As Exception
                txtPortfolios.Text = "0.00"
            End Try

            Try
                txtCorteCupones.Text = queryCupones.Count.ToString("###,##0.00")

                intTotal += queryCupones.Count
            Catch ex As Exception
                txtCorteCupones.Text = "0.00"
            End Try

            txtTotalUno.Text = intTotal.ToString("###,##0.00")

            Try
                txtTotalDos.Text = queryCargados.Count.ToString("###,##0.00")
            Catch ex As Exception
                txtTotalDos.Text = "0.00"
            End Try

            CUtileria.CompletarRegBitacora(intBitacoraRefresca)

            Mouse.OverrideCursor = Cursors.Arrow

            MessageBox.Show("Carga y recalculo de información realizada correctamente", "Recalculo", MessageBoxButton.OK, MessageBoxImage.Information)
        Catch ex As Exception
            Dim intErrorRefrescar As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Recalcula información", ex.Message)
            CUtileria.CompletarRegBitacora(intErrorRefrescar)

            Mouse.OverrideCursor = Cursors.Arrow

            MessageBox.Show("Error TI500. " & ex.Message, "Recalculo", MessageBoxButton.OK, MessageBoxImage.Error)
        End Try
    End Sub
#End Region

#Region "Carga a DECALOG"
    Private Sub btnCargaDECALOG_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnCargaDECALOG.Click
        Dim msgResultado As MessageBoxResult
        Dim blnResultadoBorrado As Boolean
        Dim intBitacoraCargaDECALOG As Integer
        Dim strRutaTLOADER As String

        If lstUltimosInstrumentos.Count = 0 And intErrores = 0 Then

            If chkBorrado.IsChecked = True Then
                blnResultadoBorrado = BorradoPrevio()
            Else
                blnResultadoBorrado = True
            End If

            If blnResultadoBorrado Then
                strRutaTLOADER = COVAFTLServicio.ObtieneRutaTLOADER()

                If File.Exists(strRutaTLOADER) Then

                    msgResultado = MessageBox.Show("Desea procesar los datos en DECALOG?", "Atención", MessageBoxButton.YesNo, MessageBoxImage.Question)

                    If msgResultado = MessageBoxResult.Yes Then
                        Mouse.OverrideCursor = Cursors.Wait

                        Try
                            Dim strRutaDECALOG As String, strRutaDirectorio As String, strParametrosAux As String, strNombrePrefijo As String
                            Dim indice As Integer = 0, indiceAux As Integer = 2

                            strRutaDECALOG = COVAFTLServicio.ObtieneRutaDECALOG()
                            strParametrosAux = COVAFTLServicio.ObtieneParametrosTLOADERCOVAFTLTraspasos()

                            While indice >= 0
                                indice = strRutaDECALOG.IndexOf("\", indiceAux)

                                If indice > 0 Then
                                    indiceAux = indice + 1
                                End If
                            End While

                            strRutaDirectorio = strRutaDECALOG.Substring(0, indiceAux - 1)
                            strNombrePrefijo = strRutaDECALOG.Substring(indiceAux, strRutaDECALOG.Length - indiceAux)

                            If Directory.Exists(strRutaDirectorio) Then
                                Try
                                    Dim strConstructor As StringBuilder = New StringBuilder()
                                    Dim intTotalColumnas As Integer = grdFicheroTL.Columns.Count

                                    intBitacoraCargaDECALOG = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Carga a DECALOG", "Se genera archivo y se carga a DECALOG mediante el TLOADER en " + strRutaDECALOG)

                                    For Each dgColumna As DataGridColumn In grdFicheroTL.Columns
                                        If dgColumna.Visibility = System.Windows.Visibility.Visible Then
                                            strConstructor.Append(dgColumna.Header + ",")
                                        End If
                                    Next

                                    strConstructor.Replace(",", vbNewLine, strConstructor.Length - 1, 1)

                                    For Each drAux As DataRowView In grdFicheroTL.Items
                                        For Each dgColumna As DataGridColumn In grdFicheroTL.Columns
                                            If dgColumna.Visibility = System.Windows.Visibility.Visible Then
                                                strConstructor.Append(drAux(dgColumna.Header).ToString.Replace(",", "") + ",")
                                            End If
                                        Next

                                        strConstructor.Replace(",", vbNewLine, strConstructor.Length - 1, 1)
                                    Next

                                    Dim strNombreFinalArchivo As String = strRutaDirectorio + "\" + servGrales.ObtenerPREFIJOARCHIVO + strNombrePrefijo + DateTime.Now.ToString("ddMMyyyyhhmmss") + ".csv"

                                    Dim swAux As StreamWriter = New StreamWriter(strNombreFinalArchivo)

                                    swAux.WriteLine(strConstructor)

                                    swAux.Close()

                                    strParametrosAux = strParametrosAux.Replace("@Archivo", strNombreFinalArchivo)

                                    Dim intInsercionBitacoraDECALOG As Integer = COVAFTLServicio.InsertaBitacoraDECALOGPorvenir(strNombreFinalArchivo, CServiciosMacrosSyBaseDB.IDUSUARIO)

                                    If intInsercionBitacoraDECALOG > 0 Then

                                        COVAFTLServicio.EjecutarProceso(strRutaTLOADER, strParametrosAux)

                                        Thread.Sleep(7000)

                                        Dim intVerificacionArchivo As Integer = VerificaArchivoDECALOG(strNombreFinalArchivo)

                                        CUtileria.CompletarRegBitacora(intBitacoraCargaDECALOG)

                                        If intVerificacionArchivo = 1 Then
                                            COVAFTLServicio.ActualizaBitacoraDECALOG(intInsercionBitacoraDECALOG, intVerificacionArchivo, CServiciosMacrosSyBaseDB.IDUSUARIO)

                                            Dim strFolios = ActualizaFolioDECALOG(strNombreFinalArchivo, intInsercionBitacoraDECALOG)

                                            Mouse.OverrideCursor = Cursors.Arrow

                                            MessageBox.Show("Los registros fueron procesados en Decalog sin ningun error. Folio(s) generado(s): " & strFolios, "Carga DECALOG", MessageBoxButton.OK, MessageBoxImage.Information)
                                        ElseIf intVerificacionArchivo = 2 Then
                                            COVAFTLServicio.ActualizaBitacoraDECALOG(intInsercionBitacoraDECALOG, intVerificacionArchivo, CServiciosMacrosSyBaseDB.IDUSUARIO)

                                            Thread.Sleep(2000)

                                            ActualizaErrorDECALOG(strNombreFinalArchivo, intInsercionBitacoraDECALOG)

                                            Mouse.OverrideCursor = Cursors.Arrow

                                            MessageBox.Show("Ha ocurrido algún error al procesar los registros, por favor revise el fichero: " + strNombreFinalArchivo + ".tl.err_text", "Carga DECALOG", MessageBoxButton.OK, MessageBoxImage.Error)
                                        ElseIf intVerificacionArchivo = 0 Then
                                            Mouse.OverrideCursor = Cursors.Arrow

                                            MessageBox.Show("Ha ocurrido un error y no se obtuvo el archivo de confirmación de DECALOG", "Carga DECALOG", MessageBoxButton.OK, MessageBoxImage.Error)
                                        ElseIf intVerificacionArchivo = 3 Then
                                            COVAFTLServicio.ActualizaBitacoraDECALOG(intInsercionBitacoraDECALOG, intVerificacionArchivo, CServiciosMacrosSyBaseDB.IDUSUARIO)

                                            Dim strFolios = ActualizaFolioDECALOG(strNombreFinalArchivo, intInsercionBitacoraDECALOG)

                                            Mouse.OverrideCursor = Cursors.Arrow

                                            MessageBox.Show("Archivo parcialmente correcto con los folios: " & strFolios & ". También se encontraron errores o reglas transgedidas, revisar el fichero: " + strNombreFinalArchivo + ".tl.err_text", "Carga DECALOG", MessageBoxButton.OK, MessageBoxImage.Warning)

                                            Thread.Sleep(1000)

                                            ActualizaErrorDECALOG(strNombreFinalArchivo, intInsercionBitacoraDECALOG)
                                        End If
                                    Else
                                        Mouse.OverrideCursor = Cursors.Arrow

                                        MessageBox.Show("Ocurrió un error al guardar el envío del archivo en la bitácora", "Generación órdenes", MessageBoxButton.OK, MessageBoxImage.Error)
                                    End If

                                Catch ex As Exception
                                    Dim intErrorCargaArchivoDecalog As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Carga a DECALOG", ex.Message)
                                    CUtileria.CompletarRegBitacora(intErrorCargaArchivoDecalog)

                                    Mouse.OverrideCursor = Cursors.Arrow

                                    MessageBox.Show("Error TI500. " & ex.Message, "Carga DECALOG", MessageBoxButton.OK, MessageBoxImage.Error)
                                End Try
                            Else
                                Mouse.OverrideCursor = Cursors.Arrow

                                MessageBox.Show("Verificar que existe la ruta: " + strRutaDirectorio + " para almacenar el archivo a procesar en DECALOG", "Carga DECALOG", MessageBoxButton.OK, MessageBoxImage.Error)
                            End If
                        Catch ex As Exception
                            Dim intErrorDosCargaArchivoDecalog As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Carga a DECALOG", ex.Message)
                            CUtileria.CompletarRegBitacora(intErrorDosCargaArchivoDecalog)

                            Mouse.OverrideCursor = Cursors.Arrow

                            MessageBox.Show("Error TI500. " & ex.Message, "Carga DECALOG", MessageBoxButton.OK, MessageBoxImage.Error)
                        End Try
                    End If
                Else
                    Mouse.OverrideCursor = Cursors.Arrow

                    MessageBox.Show("Verificar que existe el archivo: " + strRutaTLOADER + " para poder cargar los archivos a DECALOG", "Carga DECALOG", MessageBoxButton.OK, MessageBoxImage.Error)
                End If
            Else
                Mouse.OverrideCursor = Cursors.Arrow

                MessageBox.Show("Ocurrió un error al procesar el borrado de transacciones y chequeras, favor de revisar los archivos.", "Carga DECALOG", MessageBoxButton.OK, MessageBoxImage.Error)
            End If
        Else
            Mouse.OverrideCursor = Cursors.Arrow

            If lstUltimosInstrumentos.Count > 0 Then
                Dim msgEspecial As New MensajeEspecial()

                msgEspecial.Mostrar("Estos son los instrumentos faltantes:", lstUltimosInstrumentos)
            Else
                MessageBox.Show("Hay algun error o datos faltantes en el archivo a cargar, debe de corregir el problema antes de cargar los datos", "Carga DECALOG", MessageBoxButton.OK, MessageBoxImage.Error)
            End If
        End If
    End Sub

    Private Function BorradoPrevio() As Boolean
        Dim blnResultado As Boolean
        Dim intBitacoraBorrado As Integer

        Try
            Dim strFecha As String = DateAdd(DateInterval.Day, DirectCast(cmbFechaBorrado.SelectedItem, CFechaBorrado).Id * -1, Now.Date).ToString("MM/dd/yyyy")
            Dim strRutaTransacciones As String, strRutaDirectorio As String, strRutaChequeras As String, strRutaTLOADER As String, strParametrosUno As String, strParametrosDos As String
            Dim strNombrePrefijoTran As String, strNombrePrefijoCheq As String
            Dim indice As Integer = 0, indiceAux As Integer = 2

            Mouse.OverrideCursor = Cursors.Wait

            strRutaTransacciones = COVAFTLServicio.ObtieneRutaTransaccionesABorrar()
            strRutaChequeras = COVAFTLServicio.ObtieneRutaChequerasABorrar()
            strRutaTLOADER = COVAFTLServicio.ObtieneRutaTLOADER()
            strParametrosUno = COVAFTLServicio.ObtieneParametrosTLOADERCOVAFTLTraspasos()
            strParametrosDos = strParametrosUno

            If File.Exists(strRutaTLOADER) Then
                While indice >= 0
                    indice = strRutaTransacciones.IndexOf("\", indiceAux)

                    If indice > 0 Then
                        indiceAux = indice + 1
                    End If
                End While

                strRutaDirectorio = strRutaTransacciones.Substring(0, indiceAux - 1)
                strNombrePrefijoTran = strRutaTransacciones.Substring(indiceAux, strRutaTransacciones.Length - indiceAux)
                strNombrePrefijoCheq = strRutaChequeras.Substring(indiceAux, strRutaChequeras.Length - indiceAux)

                If Directory.Exists(strRutaDirectorio) Then
                    Dim strConstructor As StringBuilder = New StringBuilder()
                    Dim intTotalColumnas As Integer = grdFicheroTL.Columns.Count
                    Dim msgResultado As MessageBoxResult
                    Dim strNombreFinalArchivoChequeras As String = String.Empty, strNombreFinalArchivoTransacciones As String = String.Empty

                    intBitacoraBorrado = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Borrado previo", "Se borran transacciones y chequeras")

                    dtTransaccionesABorrar = New System.Data.DataTable()
                    dtTransaccionesABorrar = COVAFTLServicio.ObtieneTransaccionesABorrar(strFecha)

                    If dtTransaccionesABorrar.Rows.Count > 0 Then

                        msgResultado = MessageBox.Show("Se dispone a borrar " + dtTransaccionesABorrar.Rows.Count.ToString + " transacciones empezando en " + DirectCast(cmbFechaBorrado.SelectedItem, CFechaBorrado).Descripcion + " , esta seguro?", "Atención", MessageBoxButton.YesNo, MessageBoxImage.Question)

                        If msgResultado = MessageBoxResult.Yes Then

                            For Each dcColumna As DataColumn In dtTransaccionesABorrar.Columns
                                strConstructor.Append(dcColumna.ColumnName + ",")
                            Next

                            strConstructor.Replace(",", vbNewLine, strConstructor.Length - 1, 1)

                            For Each drAux As DataRow In dtTransaccionesABorrar.Rows
                                For Each dcColumna As DataColumn In dtTransaccionesABorrar.Columns
                                    strConstructor.Append(drAux(dcColumna.ColumnName).ToString.Replace(",", "") + ",")
                                Next

                                strConstructor.Replace(",", vbNewLine, strConstructor.Length - 1, 1)
                            Next

                            strNombreFinalArchivoTransacciones = strRutaDirectorio + "\" + servGrales.ObtenerPREFIJOARCHIVO + strNombrePrefijoTran + DateTime.Now.ToString("ddMMyyyyhhmmss") + ".csv"

                            Dim swAux As StreamWriter = New StreamWriter(strNombreFinalArchivoTransacciones)

                            swAux.WriteLine(strConstructor)

                            swAux.Close()

                            strParametrosUno = strParametrosUno.Replace("@Archivo", strNombreFinalArchivoTransacciones)

                            If COVAFTLServicio.EjecutarProceso(strRutaTLOADER, strParametrosUno) = False Then
                                blnResultado = False

                                CUtileria.CompletarRegBitacora(intBitacoraBorrado)

                                Return blnResultado

                                Exit Function
                            End If
                        End If
                    End If

                    dtChequerasABorrar = New System.Data.DataTable()
                    dtChequerasABorrar = COVAFTLServicio.ObtieneChequerasABorrar(strFecha)

                    If dtChequerasABorrar.Rows.Count > 0 Then

                        msgResultado = MessageBox.Show("Se dispone a borrar " + dtChequerasABorrar.Rows.Count.ToString + " chequeras empezando en " + DirectCast(cmbFechaBorrado.SelectedItem, CFechaBorrado).Descripcion + " , esta seguro?", "Atención", MessageBoxButton.YesNo, MessageBoxImage.Question)

                        If msgResultado = MessageBoxResult.Yes Then

                            strConstructor = New StringBuilder()

                            For Each dcColumna As DataColumn In dtChequerasABorrar.Columns
                                strConstructor.Append(dcColumna.ColumnName + ",")
                            Next

                            strConstructor.Replace(",", vbNewLine, strConstructor.Length - 1, 1)

                            For Each drAux As DataRow In dtChequerasABorrar.Rows
                                For Each dcColumna As DataColumn In dtChequerasABorrar.Columns
                                    strConstructor.Append(drAux(dcColumna.ColumnName).ToString.Replace(",", "") + ",")
                                Next

                                strConstructor.Replace(",", vbNewLine, strConstructor.Length - 1, 1)
                            Next

                            strNombreFinalArchivoChequeras = strRutaDirectorio + "\" + servGrales.ObtenerPREFIJOARCHIVO + strNombrePrefijoCheq + DateTime.Now.ToString("ddMMyyyyhhmmss") + ".csv"

                            Dim swAuxC As StreamWriter = New StreamWriter(strNombreFinalArchivoChequeras)

                            swAuxC.WriteLine(strConstructor)

                            swAuxC.Close()

                            strParametrosDos = strParametrosDos.Replace("@Archivo", strNombreFinalArchivoChequeras)

                            If COVAFTLServicio.EjecutarProceso(strRutaTLOADER, strParametrosDos) = False Then
                                blnResultado = False

                                CUtileria.CompletarRegBitacora(intBitacoraBorrado)

                                Return blnResultado

                                Exit Function
                            End If
                        End If
                    End If

                    Thread.Sleep(7000)

                    If strNombreFinalArchivoTransacciones.Length > 0 Or strNombreFinalArchivoChequeras.Length > 0 Then
                        blnResultado = VerificaArchivosDECALOG(strNombreFinalArchivoTransacciones, strNombreFinalArchivoChequeras)
                    Else
                        blnResultado = True
                    End If

                    CUtileria.CompletarRegBitacora(intBitacoraBorrado)

                    Mouse.OverrideCursor = Cursors.Arrow
                Else
                    blnResultado = False

                    Mouse.OverrideCursor = Cursors.Arrow

                    MessageBox.Show("Verificar que existe la ruta: " + strRutaDirectorio + " para almacenar los archivos de las transacciones y chequeras a borrar", "Borrado DECALOG", MessageBoxButton.OK, MessageBoxImage.Error)
                End If
            Else
                blnResultado = False

                Mouse.OverrideCursor = Cursors.Arrow

                MessageBox.Show("Verificar que existe el archivo: " + strRutaTLOADER + " para poder cargar los archivos a DECALOG", "Borrado DECALOG", MessageBoxButton.OK, MessageBoxImage.Error)
            End If

        Catch ex As Exception
            blnResultado = False

            Dim intErrorBorrado As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "Borrado previo", ex.Message)
            CUtileria.CompletarRegBitacora(intErrorBorrado)

            Mouse.OverrideCursor = Cursors.Arrow

            MessageBox.Show("Error TI500. " & ex.Message, "Borrado DECALOG", MessageBoxButton.OK, MessageBoxImage.Error)
        End Try

        Return blnResultado

    End Function

    Private Function VerificaArchivoDECALOG(ByVal strArchivo As String) As Integer
        Try
            Dim intSegundos As Integer = COVAFTLServicio.ObtieneSegundosEspera()
            Dim intContador As Integer = 1
            Dim strArchivoTextoError As String = strArchivo + ".tl.err_text"
            Dim strArchivoOK As String = strArchivo + ".tl.ok"
            Dim strArchivoTextoOk As String = strArchivo + ".tl.ok_text"
            Dim strArchivoError As String = strArchivo + ".tl.err"

            strArchivo = strArchivo + ".tl.err_text"

            While (intContador <= intSegundos)
                If File.Exists(strArchivoTextoError) And File.Exists(strArchivoOK) And File.Exists(strArchivoTextoOk) And File.Exists(strArchivoError) Then
                    Dim infArchivoError As FileInfo = My.Computer.FileSystem.GetFileInfo(strArchivoError)
                    Dim infArchivoTextError As FileInfo = My.Computer.FileSystem.GetFileInfo(strArchivoTextoError)
                    Dim infArchivoOK As FileInfo = My.Computer.FileSystem.GetFileInfo(strArchivoOK)
                    Dim infArchivoTextOK As FileInfo = My.Computer.FileSystem.GetFileInfo(strArchivoTextoOk)

                    If infArchivoTextError.Length = 0 And infArchivoError.Length = 0 And infArchivoOK.Length <> 0 And infArchivoTextOK.Length <> 0 Then
                        Return 1
                    ElseIf infArchivoTextError.Length > 0 And infArchivoError.Length > 0 And infArchivoTextOK.Length = 0 And infArchivoOK.Length = 0 Then
                        Return 2
                    ElseIf infArchivoTextError.Length > 0 And infArchivoError.Length = 0 And infArchivoTextOK.Length = 0 And infArchivoOK.Length = 0 Then
                        Return 2
                    ElseIf infArchivoTextError.Length > 0 And infArchivoError.Length > 0 And infArchivoTextOK.Length > 0 And infArchivoOK.Length > 0 Then
                        Return 3
                    End If
                End If

                Thread.Sleep(1000)

                intContador += 1
            End While

            Return 0
        Catch ex As Exception
            Return 0
        End Try
    End Function

    Private Function VerificaArchivosDECALOG(ByVal strArchivoUno As String, ByVal strArchivoDos As String) As Boolean
        Try
            Dim intSegundos As Integer = COVAFTLServicio.ObtieneSegundosEspera()
            Dim intContador As Integer = 1, intCorrectos As Integer = 0

            If strArchivoUno.Length > 0 Then
                strArchivoUno = strArchivoUno + ".tl.err_text"
            Else
                strArchivoUno = String.Empty
            End If

            If strArchivoDos.Length > 0 Then
                strArchivoDos = strArchivoDos + ".tl.err_text"
            Else
                strArchivoDos = String.Empty
            End If

            While (intContador <= intSegundos)
                intCorrectos = 0

                If strArchivoUno.Length > 0 And File.Exists(strArchivoUno) Then
                    Dim infArchivoUno As FileInfo = My.Computer.FileSystem.GetFileInfo(strArchivoUno)

                    If infArchivoUno.Length = 0 Then
                        intCorrectos += 1
                    Else
                        Return False
                    End If
                End If

                If strArchivoDos.Length > 0 And File.Exists(strArchivoDos) Then
                    Dim infArchivoDos As FileInfo = My.Computer.FileSystem.GetFileInfo(strArchivoDos)

                    If infArchivoDos.Length = 0 Then
                        intCorrectos += 1
                    Else
                        Return False
                    End If
                End If

                If strArchivoUno.Length > 0 And strArchivoDos.Length > 0 And intCorrectos = 2 Then
                    Return True
                ElseIf ((strArchivoUno.Length = 0 And strArchivoDos.Length > 0) Or (strArchivoUno.Length > 0 And strArchivoDos.Length = 0)) And intCorrectos = 1 Then
                    Return True
                End If

                Thread.Sleep(1000)

                intContador += 1
            End While

            Return False
        Catch ex As Exception
            Return False
        End Try
    End Function

    Private Function ActualizaFolioDECALOG(ByVal strArchivo As String, ByVal intId As Integer) As String
        Try
            Dim strNombreArchivoFolio As String = strArchivo + ".tl.ok_text", strFolio As String = String.Empty, strAux As String, strFolioInicio As String = String.Empty
            Dim inicioIdx As Integer, finIdx As Integer, AuxInicial As Integer = 0

            If File.Exists(strNombreArchivoFolio) Then
                Dim infArchivoTextoOK As FileInfo = My.Computer.FileSystem.GetFileInfo(strNombreArchivoFolio)

                If infArchivoTextoOK.Length > 0 Then
                    Dim srArchivoOk As New StreamReader(strNombreArchivoFolio)

                    While Not srArchivoOk.EndOfStream
                        strAux = srArchivoOk.ReadLine()

                        inicioIdx = strAux.IndexOf("Ok,")
                        finIdx = strAux.IndexOf("]")

                        If inicioIdx > 0 And finIdx > 0 Then
                            If AuxInicial = 0 Then
                                strFolioInicio = strAux.Substring(inicioIdx + 3, finIdx - (inicioIdx + 3)).Trim()
                            Else
                                strFolio = strAux.Substring(inicioIdx + 3, finIdx - (inicioIdx + 3)).Trim()
                            End If
                        Else
                            inicioIdx = strAux.IndexOf("=")
                            finIdx = strAux.IndexOf("(")

                            If inicioIdx > 0 And finIdx > 0 Then
                                If AuxInicial = 0 Then
                                    strFolioInicio = strAux.Substring(inicioIdx + 1, finIdx - inicioIdx - 1).Trim()
                                Else
                                    strFolio = strAux.Substring(inicioIdx + 1, finIdx - inicioIdx - 1).Trim()
                                End If
                            Else
                                inicioIdx = strAux.IndexOf("CONT")
                                finIdx = strAux.IndexOf("OK")

                                If inicioIdx > 0 And finIdx > 0 Then
                                    If AuxInicial = 0 Then
                                        strFolioInicio = strAux.Substring(inicioIdx + 4, finIdx - (inicioIdx + 4)).Trim()
                                    Else
                                        strFolio = strAux.Substring(inicioIdx + 4, finIdx - (inicioIdx + 4)).Trim()
                                    End If
                                End If
                            End If
                        End If

                        AuxInicial += 1
                    End While

                    srArchivoOk.Close()

                    If strFolioInicio.Length > 0 Then
                        If strFolioInicio.Equals(strFolio) Or strFolio.Length = 0 Then
                            strFolio = strFolioInicio
                        Else
                            strFolio = strFolioInicio & " - " & strFolio
                        End If
                    Else
                        strFolio = "Sin folios"
                    End If

                    COVAFTLServicio.ActualizaFolioDECALOG(intId, strFolio, CServiciosMacrosSyBaseDB.IDUSUARIO)

                    Return strFolio
                Else
                    COVAFTLServicio.ActualizaFolioDECALOG(intId, "Archivo sin información", CServiciosMacrosSyBaseDB.IDUSUARIO)

                    Return "Archivo sin información"
                End If
            Else
                Return "No se encontró el archivo"
            End If
        Catch ex As Exception
            Dim intErrorFolioDECALOG As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "ActualizarFolioDecalog", "Ocurrió un error al obtener el folio de Decalog para el archivo " & strArchivo & ".Error: " & ex.Message)
            CUtileria.CompletarRegBitacora(intErrorFolioDECALOG)

            Mouse.OverrideCursor = Cursors.Arrow

            MessageBox.Show("Error TI500. " & ex.Message, "Actualizar Folio Decalog", MessageBoxButton.OK, MessageBoxImage.Error)

            Return ""
        End Try
    End Function

    Private Sub ActualizaErrorDECALOG(ByVal strArchivo As String, ByVal intId As Integer)
        Try
            Dim strNombreArchivoFolio As String = strArchivo + ".tl.err_text", strMensaje As String = String.Empty

            If File.Exists(strNombreArchivoFolio) Then
                Dim infArchivoTextoOK As FileInfo = My.Computer.FileSystem.GetFileInfo(strNombreArchivoFolio)

                If infArchivoTextoOK.Length > 0 Then
                    strMensaje = File.ReadAllText(strNombreArchivoFolio)

                    COVAFTLServicio.ActualizaMensajeErrorDECALOG(intId, strMensaje, CServiciosMacrosSyBaseDB.IDUSUARIO)
                Else
                    COVAFTLServicio.ActualizaMensajeErrorDECALOG(intId, "Archivo sin información", CServiciosMacrosSyBaseDB.IDUSUARIO)
                End If
            End If
        Catch ex As Exception
            Dim intErrorDECALOG As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "ActualizarErrorDecalog", "Ocurrió un error al obtener el mensaje de Decalog para el archivo " & strArchivo & ".Error: " & ex.Message)
            CUtileria.CompletarRegBitacora(intErrorDECALOG)

            Mouse.OverrideCursor = Cursors.Arrow

            MessageBox.Show("Error TI500. " & ex.Message, "Actualizar Error Decalog", MessageBoxButton.OK, MessageBoxImage.Error)
        End Try
    End Sub
#End Region

#Region "Contenedor TABS"
    Private Sub tabContenedor_SelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) Handles tabContenedor.SelectionChanged
        Mouse.OverrideCursor = Cursors.Wait
    End Sub

    Private Sub tabPrincipal_LayoutUpdated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tabPrincipal.LayoutUpdated
        Mouse.OverrideCursor = Cursors.Arrow
    End Sub

    Private Sub tabTratamiento_LayoutUpdated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tabTratamiento.LayoutUpdated
        Mouse.OverrideCursor = Cursors.Arrow
    End Sub
#End Region

End Class
